这很有趣。
HTML:
<label name="foo"></label>
<span name="foo"></span>
使用Javascript:
var foo = $('[name="foo"]');
if (foo.is("span")) {
foo.html('haha');
}
label
和span
都有相同的HTML文字。但是,如果删除<span>
,则标签不会更改其HTML。有什么理由,以及如何恰当地区分它们?如果您将if(foo.is("span"))
更改为if(foo.is("label"))
答案 0 :(得分:7)
使用时
var foo = $('[name="foo"]');
将返回与选择器匹配的元素集合。要从中选择单个元素,请对其进行迭代。如果匹配集中的任何元素满足条件,则在jQuery对象上使用is
将返回true
。
针对选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。
使用.each():
$('[name="foo"]').each(function() {
if ($(this).is("span")) {
$(this).html('haha');
}
});
以上代码仅用于演示目的,以下代码与上述代码相同。
$('span[name="foo"]').html('haha');
答案 1 :(得分:1)
同意 Tushar ,只需使用
即可$('span[name="foo"]')
而不是
$('[name="foo"]')