Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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 为什么我的jquery更改事件没有触发?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么我的jquery更改事件没有触发?

Javascript 为什么我的jquery更改事件没有触发?,javascript,jquery,Javascript,Jquery,嘿,所以我试图用一个特定的类来定位我页面中的所有元素。我在启动查询更改函数时遇到问题。所以我尝试了很多方法,但它仍然没有开火。当我加载页面时,它会在一开始就启动,但不会在加载之后启动,并且我会收到一条错误消息,说“this”没有更改功能。然而,当我记录“这是什么”时,它清楚地显示这是一个复选框。无论如何,任何帮助都将被感激,因为这应该是一件非常容易做到的事情,我想我错过了一些小东西 $(".rcbCheckBox") .each(function () {

嘿,所以我试图用一个特定的类来定位我页面中的所有元素。我在启动查询更改函数时遇到问题。所以我尝试了很多方法,但它仍然没有开火。当我加载页面时,它会在一开始就启动,但不会在加载之后启动,并且我会收到一条错误消息,说“this”没有更改功能。然而,当我记录“这是什么”时,它清楚地显示这是一个复选框。无论如何,任何帮助都将被感激,因为这应该是一件非常容易做到的事情,我想我错过了一些小东西

     $(".rcbCheckBox")
            .each(function () {
                    console.log(this);
                    this.change(console.log("Changed"));
                });
        });

您正在调用
this.change
,它将返回
undefined
,因为
change
是一个jQuery函数。要使其正常工作,请使用:

$(this).change(function(){console.log(this)})
使用$(this)而不是this

演示:

该函数是jQuery API的一部分。 普通DOM对象不包括jQuery的函数。您可以创建一个新的jQuery对象,将DOM对象传递给jQuery函数:

var checkbox = jQuery(this);
或者,简而言之:

var checkbox = $(this);
另外,您的代码作为
change
事件的处理程序传递,而
console.log(“Changed”)
返回的不是函数

你应该这样做

$(this).change( function(){ console.log("Changed"); });
另外,请注意语法错误。您有一个额外的
})在您的示例中。考虑到前面提到的所有内容,您可以尝试以下方法:

$(".rcbCheckBox").each(function () {
    console.log(this);
    var checkbox = $(this);

    var callback = function(){
        console.log("Changed");
    }

    checkbox.change(callback);
});  

是对JS中范围的引用,而不是对元素的引用。。。这将是:
$(这个)
很酷。。。除此之外,当我在加载后更改复选框时,它仍然不会触发?请尝试
$(document).on(“change”,“.rcbCheckBox”,function(){your code})因为您的代码没有侦听任何事件…请始终解释代码应该执行的操作。不清楚您是否正在尝试添加更改侦听器或触发更改事件。破译的代码不能很好地替代正确的解释。如果有疑问,请阅读api文档,我的解释在代码中非常清楚。我希望每次更改时都将其打印到控制台。我不明白为什么我得到了两张反对票,因为我仍然没有解决方案。所以它仍然不会发射超过一次。。。同样,它只在我加载页面时触发,但在我更改复选框时从不触发?您需要将函数作为参数传递给change方法。是的,我尝试过,但它仍然不会触发。它真的伤到我的头了。所以它还不止一次开火。。。同样,它只在我加载页面时触发,但在我更改复选框时从不触发?我做了一些演示:再次检查此bin希望这有帮助:
$(this.change)(console.log(“Changed”)并不意味着senseI只是添加了$(this),而不是实际的实现。您可以查看我添加的示例,正确的代码应该是答案,而不是示例。答案应该是自包含的,演示只用于支持答案中的内容,所以它仍然不会触发多次。。。同样,它只在我加载页面时触发,而在我更改复选框时从不触发?@charlietfl,如果您需要在事件绑定之前将对象记录到控制台,我认为使用
每个
是一种方法。
$(".rcbCheckBox").each(function () {
    console.log(this);
    var checkbox = $(this);

    var callback = function(){
        console.log("Changed");
    }

    checkbox.change(callback);
});