JQUERY FIND: сначала не найти первый абзац? - PullRequest
1 голос
/ 07 января 2010

Цель - извлечь содержимое для текстового редактора CKEDITOR, а затем получить только первый абзац. По какой-то причине рев не работает ... Идеи?

С учетом следующего JavaScript:

var newTitle = CKEDITOR.instances.meeting_notes.getData(); 
newTitle = $(newTitle).find("p:first").text();

Ответы [ 3 ]

2 голосов
/ 07 января 2010

Это не работает, потому что find() ищет потомков, а ваш абзац должен находиться на верхнем уровне HTML-кода, который вы ищете.

Например:

alert($("<p id='one'>one</p><p id='two'>two</p>").find("p:first").attr("id"));

возвращает "undefined", тогда как:

alert($("<p id='one'>one</p><p id='two'>two</p>").filter("p:first").attr("id"));

выведет «один».

Таким образом, вы можете использовать filter(), если знаете, что он находится на верхнем уровне (возможно, возвращаясь к find()). В качестве альтернативы вы можете обернуть весь лот в элемент-пустышку:

alert($("<div>" + html + "</div>").find("p:first").text());

Редактировать: Мой совет? Использование:

newtitle = $(newtitle).filter("p:first").text();
0 голосов
/ 07 января 2010

Это полностью не проверено, но если предположить, что getData возвращает строку HTML, попробуйте следующее:

newTitle=$("<div>").html(newTitle).find("p:first").text();
0 голосов
/ 07 января 2010

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

Новый селектор для поиска теперь будет, find (" p: first ")

var newTitle = CKEDITOR.instances.meeting_notes.getData(); 
newTitle = $(newTitle).find("p :first").text();

Кстати, вы можете опубликовать некоторые примеры значений newTitle, просто любопытно, как это выглядит!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...