jQuery没有区分span和label

Bar*_*s41 1 javascript jquery

这是有趣的.

HTML:

<label name="foo"></label>
<span name="foo"></span>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

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

这两个labelspan将具有相同的HTML文本.但是,如果删除<span>,则标签不会更改其HTML.有什么理由,以及如何恰当地区分它们?如果你改变也是如此if(foo.is("span")),以if(foo.is("label"))

Tus*_*har 7

当你使用

var foo = $('[name="foo"]');
Run Code Online (Sandbox Code Playgroud)

一个元素集合选择匹配将被退回.要从中选择单个元素,请对其进行迭代.使用is一个jQuery对象将返回true如果匹配的集合中的任何元素满足该条件.

.是()

根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true.

使用.each():

$('[name="foo"]').each(function() {
    if ($(this).is("span")) {
        $(this).html('haha');
    }
});
Run Code Online (Sandbox Code Playgroud)

以上代码仅用于Demo目的,下面的代码相当于上面的代码.

$('span[name="foo"]').html('haha');
Run Code Online (Sandbox Code Playgroud)