为什么在JQuery中的id选择器之前添加标签名称?

时间:2014-04-02 06:29:34

标签: jquery selector

$('a#actionLifeEnforcement').click(function() {
        if(!validateSelectedRightsType()){
            return false;
        };
        if ($("input:checkbox:checked").length == 1) {
            $("input:checkbox:checked").each(function() {
            $('<input>').attr({
                type: 'hidden',
                id: 'id',
                name: 'id',
                value:  $(this).val()
                }).appendTo('form#formLifeEnforcement');
            });
            $('#formLifeEnforcement').submit();
            }else {//....   }
            return false;
    });

我不明白上面的代码,在jquery选择器中,为什么需要在id之前添加标签名?比如a#actionLifeEnforcementform#formLifeEnforcement

3 个答案:

答案 0 :(得分:3)

简短的回答是,您不必在选择器中使用idclass名称之前的元素类型。

答案很长,您应该从不必须在id选择器之前使用元素名称,因为id应该始终是唯一的页。你想要在id之前指定元素类型的唯一原因是你想要告诉自己你正在处理什么类型的元素。

然而,当涉及到类时,你肯定会遇到这样一种情况:你想要拥有许多具有相同类名的元素的元素,而这些元素具有其他不具有的特定行为。这方面的一个例子是这样的。

<script type="text/javascript">
 $('a.button').click(function( ){ 
     alert("I'm a link that looks like a button!"); 
     return false;
 });
 $('input.button').click(function( ){ 
     alert("I'm an input that looks like a button!"); 
     return false;
 });
</script>

<a href="#" class="button">Link</a>
<input type="submit" name="button" value="Submit Button" />

总结:您选择元素类型前置id的选择器是正确的。

希望能够解决问题。

注意:我的例子暗示有一些CSS使2个元素看起来相同。这就是他们共享相同课程名称的原因。

答案 1 :(得分:0)

假设您有多个具有相同类的不同标签  而且你只想要#34; a&#34;标签有class =&#34; check&#34;点击然后只调用你的函数,为了得到你必须写$(&#34; a.check).click(function(){}); 它执行得更快。

答案 2 :(得分:0)

虽然在同一页面中每个元素的ID都是唯一的,但您的问题是

为什么在id选择器之前添加标签名称?

简单的答案是没有必要使用id选择器执行此操作:

$('a#actionLifeEnforcement')

上面的选择器只选择具有特定id的锚,但是对于类选择器来说非常重要。

但是在类名的情况下假设:

您有两个具有相同类名的不同标签:

<a class='myclass'>dummy link</a> // an anchor with classname "myclass"
<div class='myclass'>dummy text</div> // a div with classname "myclass"

所以现在在js:

$('.myclass')

上面的选择器因为相同的类名而选择了两个元素,但是:

$('a.myclass')
$('div.myclass')

这两个选择器彼此不同,您可以通过这种方式执行不同的操作。

Fiddle with same class names with different tags.