2012-06-19 2 views
0

Так что у меня что-то вроде этого:Как получить содержимое (внутренний html) элемента, кроме последнего и предпоследнего?

<span class="a"> Contents <span class="b">Herp</span><br></span>

... где «содержания» может отличаться от строки, в течение одного изображения до нескольких переносов. Мне нужно определить «содержимое» как переменную без получения b.span и br.

Как вы это делаете? Заранее большое спасибо!

+0

Хмм выглядит знакомым ... http://stackoverflow.com/questions/11091884/how-do-i-get-the-string-of-an- Элемент-not-including-the-strings-sibling-elemen – Musa

+0

«Содержимое» может отличаться от строки, для одного изображения для нескольких разрывов строк - я выделил это. Да, я задал этот вопрос, но понял, что содержимое не является строкой все время. Так что да, ему нужен другой код. = w = – Jawn

ответ

2

Используйте .contents(), чтобы получить все содержимое, а затем применить .slice() method отрезать два последних:

$("span.a").contents().slice(0,-2) 
+0

ЭТО РАБОТАЕТ! 8D СПАСИБО! – Jawn

+0

Извините, но это работает только в том случае, если содержимое является элементом, а не строкой. 8 ( – Jawn

+0

Нет, если это просто строка * – Jawn

1
alert($('span.a').text()); //will alert 'Contents' 
+0

, но также получит 'span.b'. Оператор хочет не иметь значение 'span.b' в значении. –

+0

«Содержимое» может быть img, или string, или любым элементом, поэтому мне нужно определить исключение. 8 | – Jawn

0

, если вы хотите, все, за исключением последних 2-х элементов попробовать:

var $content= $(".a").contents(); 

var htmlnodes = $content.filter(function(ndx) { 
    return (ndx < $content.length -2); 
}); 

    console.log(htmlnodes);​ 
+0

«Содержимое» может быть «» или строкой или любым элементом, поэтому мне нужно определить исключение. 8 | – Jawn

+0

, если его элемент 'any', то вы действительно не оставляете идентификатор для проверки. –

+0

'return (ndx <$ content.length -2);' кажется немного менее сложным, хотя и довольно сложным, чем просто использование метода '.slice()' ... – nnnnnn

0

Вы можете вставить элемент A в переменную.

var $a = $('.a').children().remove(); 
alert($('.a').html().append($a));​​ 

В этом примере мы не закодировав число элементов, которые должны быть удалены или нарезанными или любыми другими. Это немного более элегантно.

1
var clone = $('span.a').clone(); 
$('span.b', clone).remove(); 
var text = clone.text(); 
console.log(text); 
0
var c = $('.b').nextAll('br').remove().end().parent().find('.b').remove().end().html(); 
alert(c) 

Смотрите его here

+0

Но разве это не удалит все элементы br? OP сказал, что «содержимое» может включать в себя несколько разрывов строк. – nnnnnn

+0

@nnnnnn теперь он не удаляет разрывы строк в «содержимом». –

Смежные вопросы