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);
}
我有:
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);
}