this.click()和$(this).click()有什么区别?

Tho*_*mas 3 javascript jquery javascript-events

最后,我已经确定这不是我特别需要解决的问题,但是我不理解为什么会发生这种情况.

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


$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);
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

当我测试它时,我注意到如果我使用:


$j('input[type=checkbox]').each( function () {
    this.click()
});
Run Code Online (Sandbox Code Playgroud)

Javascript的反应如我所料,但是当用于:


$j('input[type=checkbox]').each( function () {
    $j(this).click()
});
Run Code Online (Sandbox Code Playgroud)

它实际上会使计数器计数UP.

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

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

Otá*_*cio 6

$(this)包含一个jQuery包装器(包含许多函数),而这只是DOM对象.