Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 onclick动态更改_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript Jquery onclick动态更改

Javascript Jquery onclick动态更改,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,下面是我的jqueryonclick函数。应用于图像的事件 此代码正在根据接收到的数据值更改onclick事件。 我在代码中添加了一个断点,如下所示。 发生的一件奇怪的事情是,在我第一次点击解释器时,解释器只通过我的代码一次,这是正常的 但当我第二次点击时,它会通过两次 在第三次单击时,将其传递4次 第5次单击8,依此类推 i、 e每次单击调用的回调次数呈指数级增长。现在我的问题是为什么会发生这种情况 注意:所有变量都定义正确,但为了简化,我将代码的其余部分剥离了 updateUser = fu

下面是我的jqueryonclick函数。应用于图像的事件

此代码正在根据接收到的数据值更改onclick事件。
我在代码中添加了一个断点,如下所示。 发生的一件奇怪的事情是,在我第一次点击解释器时,解释器只通过我的代码一次,这是正常的

但当我第二次点击时,它会通过两次

在第三次单击时,将其传递4次

第5次单击8,依此类推

i、 e每次单击调用的回调次数呈指数级增长。现在我的问题是为什么会发生这种情况

注意:所有变量都定义正确,但为了简化,我将代码的其余部分剥离了

updateUser = function (user, block) {
    jQuery.ajax({
        type: "POST",
        url: "index.php?option=com_contentbuilder&controller=myActicateUser",
        data: data,
        dataType: "json",
        success: function (data) {
            if (data) {
                var pinID = "#pin" + user;
                user = data[0]; 
>>breakpoint        if (data[1] === "0") {

                    jQuery(pinID).click(function () {
                        updateUser(user, "1")
                    });
                    jQuery(pinID).attr("src", tack);


                } else if (data[1] === "1") {

                    jQuery(pinID).click(function () {
                        updateUser(user, "0")
                    });
                    jQuery(pinID).attr("src", tick);

                }
            }
        }
    });
}
我已经尝试过的是

 if(data[1]==="1"){
                             jQuery(pinID).unbind();
                             jQuery(pinID).removeAttr("onclick");
                             jQuery(pinID).click(function(){updateUser(user,"0")});
}

这是因为每次调用
updateUser
时,它都会在相同的元素上绑定额外的
click
处理程序


首先(
jQuery(pinID)。解除绑定(
click')。单击(…)
)或者只在
updateUser
外部添加绑定一次,这是因为每次调用
updateUser
时,它都会在相同元素上绑定其他
click
处理程序


首先(
jQuery(pinID)。解除绑定('click')。单击(…)
),或者只在
updateUser
外部添加一次绑定,而不是单击,基于jQuery插件,您可以使用

jQuery(pinID).live("click",function(){updateUser(user, "1")})

or

jQuery(pinID).on("click",function(){updateUser(user, "1")})

也许这对你有帮助。因为它们将动态绑定并处理元素的点击事件。

基于jquery插件,您可以使用

jQuery(pinID).live("click",function(){updateUser(user, "1")})

or

jQuery(pinID).on("click",function(){updateUser(user, "1")})

也许这对你有帮助。因为它们将动态地绑定并处理元素的点击事件。

谢谢你们两位Gaby和Anand, 我自己写答案的原因是我用两个答案都解决了这个问题,所以 为什么我喜欢写我自己的答案

我发现如下所示

success: function(data) {

                            if (data){
                                var pinID="#pin"+user;
                                user=data[0];
                                if(data[1]==="0"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();
                                    jQuery(pinID).on("click",function(){updateUser(user,"1")});
                                    jQuery(pinID).attr("src",tack);


                                }
                                else if(data[1]==="1"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();                                        
                                    jQuery(pinID).on("click",function(){updateUser(user,"0")});
                                    jQuery(pinID).attr("src",tick);
                                }


                            }

            }
下面是我的事件注册标签

<img src="hello.png" onlick="updateUser()"/>
无法解除上述onclick事件的绑定,除非未删除img标记中的onclick属性。所以在解除绑定之前,我添加了以下语句

jQuery(pinID).attr("onclick", "");
它开始工作了。但另一个问题是,unbind也不适用于注册为的事件

jQuery(pinID).click(function () {
                    updateUser(user, "0")
                });
因此,我按照Anand的建议替换了上面的行

jQuery(pinID).on("click",function(){updateUser(user, "1")})
最终的工作代码如下

success: function(data) {

                            if (data){
                                var pinID="#pin"+user;
                                user=data[0];
                                if(data[1]==="0"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();
                                    jQuery(pinID).on("click",function(){updateUser(user,"1")});
                                    jQuery(pinID).attr("src",tack);


                                }
                                else if(data[1]==="1"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();                                        
                                    jQuery(pinID).on("click",function(){updateUser(user,"0")});
                                    jQuery(pinID).attr("src",tick);
                                }


                            }

            }

再次感谢你们两位,加布和阿南, 我自己写答案的原因是我用两个答案都解决了这个问题,所以 为什么我喜欢写我自己的答案

我发现如下所示

success: function(data) {

                            if (data){
                                var pinID="#pin"+user;
                                user=data[0];
                                if(data[1]==="0"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();
                                    jQuery(pinID).on("click",function(){updateUser(user,"1")});
                                    jQuery(pinID).attr("src",tack);


                                }
                                else if(data[1]==="1"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();                                        
                                    jQuery(pinID).on("click",function(){updateUser(user,"0")});
                                    jQuery(pinID).attr("src",tick);
                                }


                            }

            }
下面是我的事件注册标签

<img src="hello.png" onlick="updateUser()"/>
无法解除上述onclick事件的绑定,除非未删除img标记中的onclick属性。所以在解除绑定之前,我添加了以下语句

jQuery(pinID).attr("onclick", "");
它开始工作了。但另一个问题是,unbind也不适用于注册为的事件

jQuery(pinID).click(function () {
                    updateUser(user, "0")
                });
因此,我按照Anand的建议替换了上面的行

jQuery(pinID).on("click",function(){updateUser(user, "1")})
最终的工作代码如下

success: function(data) {

                            if (data){
                                var pinID="#pin"+user;
                                user=data[0];
                                if(data[1]==="0"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();
                                    jQuery(pinID).on("click",function(){updateUser(user,"1")});
                                    jQuery(pinID).attr("src",tack);


                                }
                                else if(data[1]==="1"){
                                    jQuery(pinID).attr("onclick","");
                                    jQuery(pinID).unbind();                                        
                                    jQuery(pinID).on("click",function(){updateUser(user,"0")});
                                    jQuery(pinID).attr("src",tick);
                                }


                            }

            }

再次感谢你们两位,我编辑了我的问题。我以前是怎么尝试的,这是在埃迪特portion@arslan,您需要对
(数据[1]=“0”)
场景执行相同的操作。。(也不需要删除
onclick
属性)我编辑了我的问题。我以前是怎么尝试的,这是在埃迪特portion@arslan,您需要对
(数据[1]=“0”)
场景执行相同的操作。。(也无需删除
onclick
属性)不,它仅对解除绑定无效。您也必须使用jQuery(pinID).attr(“onclick”,即“);我浪费了一整天来调试这种情况。以上答案包括工作代码。对不起,错误地提到了。尝试不解除绑定()。不,只有解开它才行。您也必须使用jQuery(pinID).attr(“onclick”,即“);我浪费了一整天来调试这种情况。以上答案包括工作代码。对不起,错误地提到了。尝试不解除绑定()。它会起作用的。Mary Anywhere作为答案Mary Anywhere作为答案Mary Anywhere作为答案