2012-03-27 2 views
2

У меня есть этот маленький текстРазделить TextNode в середине

<div> 
Hello world<br> 
this is a good<br> 
text! 

<br><br> 

Whatever I need help<br> 
so please!<br> 

<br><br> 
<!-- I WANT TO SELECT THE ELEMENTS AFTER THIS LINE INCLUDING TEXTNODE --> 
It will be very nice<br> 
when it works! 

<br><br> 
It will be very nice<br> 
when it works! 
<br><br> 
</div> 

Как вы можете видеть это выглядит diffrent разделов.

я могу найти середину по seraching для всех двойных <br><br> тегов в разметке и divde его 2. Я создал эту маленькую функцию:

var content = $("div").html().toString(); 
var middle = content.match(/<br[^>]*><br[^>]*>/g).length/2; 

Моя проблема сейчас в том, что я не знаю точно как выбрать элементы, в том числе текстовый, который находится после двухбайтовых тегов.

Heres скрипку с разметкой и JS http://jsfiddle.net/ATbKU/

Если я просто получить подсказку о том, как выполнить это будет достаточно ;-)

+0

Просьба уточнить, вы хотите, чтобы выбрать узлы * до * или * после * среднего 'br' узлы (ваш комментарий говорит прежде, текст выше). –

+0

О, моя вина. Я хочу выбрать его после ... –

ответ

1

Я пришел с этим решением, которое не включает в себя нарезка в HTML:

var content = $("div").contents(), 
    dblBRCount = content.filter(function() { 
     return this.tagName == "BR" && this.nextSibling.tagName == "BR"; 
    }).length, 
    filterCount = 0, 
    result = content.filter(function() { 
     if (filterCount >= (dblBRCount/2)) 
      return true; 
     else if (this.tagName == "BR" && this.previousSibling.tagName == "BR") 
      filterCount++; 

     return false;     
    });​​​​ 

Вместо этого, он перебирает все дочерние узлы элемента дважды, один раз, чтобы получить число двойных <br> элементов, а другой, чтобы отфильтровать все элементы Befor е середина, сохраняя их после.

Работа демо: http://jsfiddle.net/AndyE/ATbKU/1/

+1

Awsome! Большое спасибо, я сделаю все остальное самостоятельно! Спасибо тебе за то, что ты Энди! –

+2

Посмотрите на эту (imo) упрощенную версию: http://jsfiddle.net/ATbKU/2/ –

+1

@FelixKling: действительно, ваше решение немного короче и, возможно, немного легче понять. Хорошая работа :-) –

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