Ближайший ищет DOM вверх, а не вниз, как find
.
Ближайшие документы:
Описание: Получить первый элемент, который соответствуетселектор, начиная с текущего элемента и продвигаясь вверх по дереву DOM.
find docs:
Описание: получить потомков каждого элементав текущем наборе соответствующих элементов, отфильтрованных селектором, объектом jQuery или элементом.
, поэтому для text1 это должно быть closest
, а для text2 должно быть find
:
function getDomPartUp(text,htmlTag){
return $(text).closest(htmlTag).html();
}
function getDomPartDown(text,htmlTag){
return $(text).find(htmlTag).html();
}
var text1='<object>some text + html elements </object>';
var text2='<div><object>some text + html elements </object></div>';
alert(getDomPartUp(text1,'object'));
alert(getDomPartDown(text2,'object'));
Используйте .html
, чтобы получить нужный текст.
JSFiddle DEMO
Обновление:
Чтобы сделать это одним способом:
function search(text,htmlTag){
var $up = $(text).closest(htmlTag);
if ($up.length > 0)
return $up.html();
var $down = $(text).find(htmlTag);
return $down.length > 0 ? $down.html() :"";
}
var text1='<object>some text + html elements </object>';
var text2='<div><object>some text + html elements </object></div>';
alert(search(text1,'object'));
alert(search(text2,'object'));
JSFiddle DEMO