我怎么会滥用选择器的开头

How am I misusing the start with selector?

本文关键字:开头 选择器 怎么会      更新时间:2023-09-26

如果a == "http://foo.bar"$(b[0]).attr("href") == "http://foo.bar"

那么为什么以下代码没有返回true:

$("[href^='"" + a + "'"]", b).length > 0

因为传递给jQuery函数的第二个参数确定了选择器的范围,也就是说,在b的子元素中找到所选元素。

以为例

<div id="one">
   <div id="two" title="Test" />
</div>

这将返回1个

$('[title="Test"]','#one').length 

这将返回0

$('[title="Test"]','#two').length 

现场示例:http://jsfiddle.net/mkudf/


根据您的评论,在将元素添加到dom之前,您似乎正在做一些事情,例如:

var $x = $('<div id="one" /><div id="two" title="Test" />');
alert($('[title="Test"]',$x).length); // alerts "0"

如果不将动态元素包装在一个额外的元素中,我找不到任何方法来实现你想要的(上面提醒"1"):

var $x = $('<div><div id="one" /><div id="two" title="Test" /></div>');
alert($('[title="Test"]',$x).length); // now alerts "1"

这应该不是太大的问题,当添加到dom时,你可以只使用$x.children():

$someOtherElement.after($x.children());