Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个.click()和$(这个).click()之间有什么区别?_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript 这个.click()和$(这个).click()之间有什么区别?

Javascript 这个.click()和$(这个).click()之间有什么区别?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,最后,我决定这不是一个我特别需要解决的问题,但是我不明白为什么会发生这种情况,这让我很困扰 基本上,我有一些复选框,我只希望用户能够选择一定数量的复选框。我使用下面的代码来实现这个效果 $j( function () { $j('input[type=checkbox].vote_item').click( function() { var numLeft = (+$j('#vote_num').text()); console.log(numLeft)

最后,我决定这不是一个我特别需要解决的问题,但是我不明白为什么会发生这种情况,这让我很困扰

基本上,我有一些复选框,我只希望用户能够选择一定数量的复选框。我使用下面的代码来实现这个效果


$j( function () {
    $j('input[type=checkbox].vote_item').click( function() {
        var numLeft = (+$j('#vote_num').text());
        console.log(numLeft);
        if ( numLeft == 0 && this.checked ) {
            alert('I\'m sorry, you have already voted for the number of items that you are allowed to vote for.');
            return false;
        } else {
            if ( this.checked == true ) {
                $j('#vote_num').html(numLeft-1);
            } else {
                $j('#vote_num').html(numLeft+1);
            }
        }
    });
});
当我测试它时,我注意到如果我使用:


$j('input[type=checkbox]').each( function () {
    this.click()
});
Javascript的反应与我预期的一样,但是当与以下内容一起使用时:


$j('input[type=checkbox]').each( function () {
    $j(this).click()
});
这实际上会使计数器计数

我确实意识到,使用计数器计数并不是最安全的方法,但是我确实有服务器端错误检查,防止在数据库中输入超过所需数量的数据,这就是我决定不需要修复的原因


编辑:$j是因为我必须在noConflict模式下使用jQuery…

$(这)包含一个jQuery包装器(有很多函数),而这仅仅是DOM对象。

计数器上升的事实给了我一个线索,即您正在使用的checked属性之间存在链接,并手动触发单击事件

我在谷歌上搜索了“jquery复选框点击事件引发”,找到了这个链接,作者在这里面临着完全相同的问题和他使用的解决方法

另一方面,我认为您可以进一步简化代码:

$j('input[type=checkbox].vote_item').click( 
function() 
{
    var maxNumberOfChoices = 5;

    //get number of checked checkboxes. 
    var currentCheckedCount = $j('input[type=checkbox].vote_item :checked');

    if(currentCheckedCount > maxNumberOfChoices)
    {
        //It's useful if you show how many choices user can make. :)
        alert('You can only select maximum ' + maxNumberOfChoices + ' checkboxes.');
        return false;
    }

    return true;
});
this.click()
调用浏览器DOM方法


$(this).click()
调用jQuery方法,它不仅仅调用browser方法:有关详细信息,请参阅函数的实现。

我理解,但是…函数之间的具体区别是什么?当通过jQuery包装的元素触发时,jQuery是否会改变其他DOM事件的功能?