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

时间:2016-09-13 19:31:23

标签: javascript jquery

嘿所以我试图用某个类来定位页面中的所有元素。我遇到了解决查询更改功能的问题。所以我尝试过很多东西但仍然没有开火。当我加载页面时它会在开始时触发,但从不在它之后触发,我收到一条错误消息,指出'this'没有更改功能。但是,当我记录它的内容时,它清楚地显示它是一个复选框。无论如何任何帮助将不胜感激,因为这应该是一件非常容易的事情,我想我错过了一些小事。

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

3 个答案:

答案 0 :(得分:5)

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

$(this).change(function(){console.log(this)})

答案 1 :(得分:1)

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

使用$(this)代替此。

演示:https://jsbin.com/niqefe/2/edit?html,js,console,output

答案 2 :(得分:0)

change()函数是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);
});