вопрос относительно селектора jQuery - PullRequest
3 голосов
/ 27 мая 2011
<div id="foo">yyy<span>xxx</span></div>

У меня есть вышеупомянутая структура для моего HTML.Я хочу вставить какой-либо контент в yyy позицию.Можете ли вы дать мне знать, что будет для него?Я бы передал этот селектор к некоторой функции, и эта функция будет делать $(selector).html('content')

Ответы [ 5 ]

6 голосов
/ 27 мая 2011
var s = $('#foo span');
$('#foo').text("hello").append(s);

Демо: http://jsfiddle.net/uTNTF/

Или, если обновление HTML является опцией, то просто добавив yyy в <span>, вы упростите свою жизнь:

$('#foo span:first-child').text("hello");

Демо: http://jsfiddle.net/uTNTF/1/

2 голосов
/ 27 мая 2011

Вы можете использовать функцию jQuery .prepend () (вставить содержимое, указанное параметром, в начало каждого элемента в наборе соответствующих элементов):

$('#foo').prepend('some content');
1 голос
/ 27 мая 2011

yyy должен отображаться в элементе блока, чтобы вы могли легко его обнаружить, в противном случае я не вижу другого выбора, кроме хакерского:

$('#foo').html($('#foo').html().replace('yyy','')).find('span').before('new content');

Живой пример: http://jsfiddle.net/MTu6c/

0 голосов
/ 27 мая 2011

Размещенная вами разметка «гггг» представлена ​​в DOM как текстовый узел. В jQuery нет методов или селекторов для изоляции текстовых узлов, но в DOM есть.

Смотрите здесь (ваш вопрос может рассматриваться как дубликат этого): Как выбрать текстовые узлы с помощью jQuery?

0 голосов
/ 27 мая 2011

Я не думаю, что есть один магический селектор, который выделит какой-то простой текст внутри контейнера, но не весь контент.

Если вы хотите заменить «yyy» на «некоторый контент», вы можете сделать что-то вроде следующего:

$('#foo').html('some content' + $('#foo span').html())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...