案例:应该选择对象
示例:
function getDomPart(text,htmlTag){
return $(text).closest(htmlTag).get(0);
}
var text1='<object>some text + html elements </object>';
var text2='<div><object>some text + html elements </object></div>';
alert(getDomPart(text1,'object'));
alert(getDomPart(text2,'object'));
结果应该是:一些text + html元素 但事实并非如此。
请告诉我应该修复什么。
编辑: 请通过简短的解决方案查看我的答案。
答案 0 :(得分:2)
最接近的是搜索DOM,而不是像find
一样搜索。
描述:获取与选择器匹配的第一个元素,从当前元素开始并逐步向上遍历DOM树。
描述:获取当前匹配元素集中每个元素的后代,由选择器,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'));
答案 1 :(得分:0)
尝试对元素的子元素使用find()
,并使用andSelf()
来获取元素本身。
答案 2 :(得分:0)
我想到的解决方案:添加包装元素然后只能使用find:
function search(text,htmlTag){
return $('<div>'+text+'</div>').find(htmlTag).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'));