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