jQuery没有区分span和label

时间:2015-11-03 14:42:01

标签: javascript jquery

这很有趣。

HTML:

<label name="foo"></label>
<span name="foo"></span>

使用Javascript:

var foo = $('[name="foo"]');
if (foo.is("span")) {
    foo.html('haha');
}

labelspan都有相同的HTML文字。但是,如果删除<span>,则标签不会更改其HTML。有什么理由,以及如何恰当地区分它们?如果您将if(foo.is("span"))更改为if(foo.is("label"))

,情况也是如此

2 个答案:

答案 0 :(得分:7)

使用时

var foo = $('[name="foo"]');

将返回与选择器匹配的元素集合。要从中选择单个元素,请对其进行迭代。如果匹配集中的任何元素满足条件,则在jQuery对象上使用is将返回true

.is()

  

针对选择器,元素或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"]')