jQuery 在变量中查找元素

jQuery find element in variable

我有:

var html_data = '<div class="div1">something</div><div id="this_is_it">Hello!</div>';

如何检查 html_data 变量是否有 div this_is_it?

正在尝试使用

进行检查
if($(html_data).find('#this_is_it').length)

但是不工作....

你的问题出在引号的使用上...

其结构应如下:

var html_data = "<div class='div1'>something</div><div id='this_is_it'>Hello!</div>";

或者如果 div1 和 this_is_it 是变量,那么:

var html_data = "<div class="+div1+">something</div><div id="+this_is_it+">Hello!</div>";

然后 if($(html_data).find('#this_is_it').length); 应该给你一个结果...或者如果变量:if($(html_data).find('#'+this_is_it).length)

另外 terpinmd 在评论中提出了一个很好的观点,因此要使其与 find() 一起使用,它应该位于包装元素内。他推荐使用 filter(),效果很好。谢谢 terpinmd。

我认为您不能对 javascript 上的变量使用 find(),您可能需要输入 html 代码,然后通过 find()

.find() 只搜索给定元素的子元素,而不是顶级元素。因此,您需要将所有内容包装在另一个 <div> 中。此外,您需要修复导致语法错误的引号问题——如果您在字符串中使用双引号,请使用单引号来分隔它,反之亦然(或转义引号)。

var html_data = '<div class="div1">something</div><div id="this_is_it">Hello!</div>';
if ($("<div>" + html_data + "</div>").find("#this_is_it").length) {
  console.log("found");
} else {
  console.log("not found");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

首先因为其他发帖者说你的引文不对...试试这个:

var html_data = '<div class="div1">something</div><div id="this_is_it">Hello!</div>';

其次,在这种情况下你需要使用过滤器。 Find looks through children elements only where as filter 适用于所有元素。

var one = $(html_data).filter ('#this_is_it').length;

var zero = $(html_data).find('#this_is_it').length;

你的 html 结构在这种情况下是扁平的,所以使用过滤器(或第一个)。

如果您只想 运行 检查,只需使用 indexOf() 即可。

示例 1:

var html_data = '<div class="div1">something</div><div id="this_is_it">Hello!</div>';

document.write(html_data.indexOf("this_is_it") > 1 ? true : false)

示例 2:

仅供参考:检查 this_is_it 的长度是否大于 1。

if(html_data.indexOf("this_is_it") > 1){

//do something here

}

希望这对您有所帮助..

试试这个..

var html_data = '<div class="div1">something</div><div id="this_is_it">Hello!</div>';

if(html_data.indexOf("this_is_it")){
    console.log(true);
}else{
    console.log(false);
}