2010-11-03 3 views
0

Привет пожалуйста, обратитесь следующий HTML код:Помощь в JQuery селекторы

<div id="content"> 
    <p> 
     <font size='2'> 
     <img src="something.jpg" width="500" height="500" /> 
     this is the text content. this is the text content. this is the text content... 
     </font> 
    </p> 
</div> 

это HTML-код, который генерируется из админ части моего веб-приложения. Я не могу изменить его, а также не могу изменить структуру вышеуказанного кода. он генерирует динамически.

Мне нужно обернуть текстовое содержимое элементом html с помощью метода jquery wrap(), чтобы я мог поместить некоторые css в текстовое содержимое, а не на элемент img.

Примечание: Элемент div с содержимым «id» является моим собственным, я могу получить доступ только к этому с помощью HTML.

Помогите, пожалуйста, как это сделать?

Благодаря

+0

Я попытался с этим var elm = $ ("# content p font"). Children (": not (img)"). Wrap ("

"); – Bhupi

ответ

6

Вот JQuery путь

$("p > font") 
    .contents() 
    .filter(function() { 
    return this.nodeType == 3; 
    }).wrap('<span style="color:#FF0000" />'); 

You can Demo it herehttp://www.jsfiddle.net/K8WNR/

+0

@Bhupi ... Без проблем –

+1

Ницца, я проголосовал за это, потому что это лучше, чем мой ответ. – jpsimons

3

Не уверен, что если вы можете сделать это с помощью JQuery. Но если вы используете необработанный JavaScript, вы можете просмотреть узлы и проверить их nodeType, причем 1 является Element, а 3 - Text. Так сказать f ваш шрифт элемент:

for (var i=0; i < f.childNodes.length; i++) { 
    if (f.childNodes[i].nodeType == 3) { 
     var text = f.nodeValue; 
     // Remove the text node, insert a new span node and plug in the text. 
    } 
} 
0

Вы могли бы попробовать это ...

$(function() { 
    $("#content").find("p > font").each(function() { 
    var $this = $(this).wrapInner(document.createElement("div")); 
    var $img = $this.find('img').remove(); 
    $this.prepend($img); 
    }) 
}); 

который будет возвращать это ...

<p> 
    <img height="500" width="500" src="something.jpg"> 
    <div> 
     this is the text content. this is the text content. this is the text content... 
    </div> 
</p> 
+0

Спасибо, но я хочу обернуть только «текстовый контент», а не элемент img. – Bhupi

+0

ОК, я изменил приведенный выше код. Образец Джона произведет несколько лишних пустых тегов, но все же работает. -- Удачи – rsturim