如何通过jquery检查html元素是否有一些html标签?

发布于 2025-01-04 09:42:18 字数 457 浏览 3 评论 0原文

案例:应该选择对象

示例:

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'));

结果应该是:一些文本+ html 元素 但事实并非如此。

请告诉我应该修复什么。

编辑: 请参阅我的回答和简短的解决方案。

The case : should select object

example:

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'));

the result should be: some text + html elements
but its not.

please tell me what should be fixed.

Edit:
please see my answer with short solution.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

总攻大人 2025-01-11 09:42:18

最接近的是向上搜索 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'));​

JSFiddle 演示

closest is searching the DOM up, not down like find.

closest docs:

Description: Get the first element that matches the selector, beginning at the current element and progressing up through the DOM tree.

find docs:

Description: Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.

so for text1 it should be closest and for text2 it should be 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'));​

Use .html to get the text you wanted.

JSFiddle DEMO


Update:

To do it in one method:

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

分開簡單 2025-01-11 09:42:18

尝试使用 find() 来获取元素的子元素,并使用 andSelf() 来获取元素本身。

Try to use find() for the element's children and andSelf() to get the element itself.

廻憶裏菂餘溫 2025-01-11 09:42:18

我想到的解决方案:添加包装元素然后只能使用查找:

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'));

演示:
http://jsfiddle.net/EaZrs/5/

The solution that i get idea about : add wrapper element then can be used only 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'));

Demo:
http://jsfiddle.net/EaZrs/5/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文