为什么delegate()这个方法的外部参数有时候可以修改,有时候修改不了

                    var delParent;
                    var testI = 10;
                    $(".z_photo").delegate(".close-upimg", "click", function(event) {
                        event.stopPropagation();
                        $(".works-mask").show();
                        testI = 11;
                        delParent = $(this).parent();
                    });

                    $(".wsdel-ok").click(function() {
                        console.log(testI+"=====testi====")
                        $(".works-mask").hide();
                        var numUp = delParent.siblings().length;
                        if (numUp < imageNum + 1) {
                            delParent.parent().find(".z_file").show();
                        }
                        delParent.remove();
                    });        

其中.close-upimg 有时候是动态生成的,有时候是页面渲染出来的。现在的情况是:先在页面渲染出来的.close-upimg 这个类点击事件执行,那么执行$(".wsdel-ok").click事件,testI的值就可以改变。要是先动态添加生成的.close-upimg,那么执行$(".wsdel-ok").click事件,testI的值就并没有改变,还是需要先去执行一下页面渲染出来的.close-upimg事件,方可改变。ps(以上代码是封装插件里面的一段,外部调用的方法,不知道是不是这个影响…………)

阅读 1.9k
1 个回答

jq 3.0以上版本 移除 delegate 方法,建议 你改成 on.

如果你的 .wsdel-ok 也是 动态生成的,也得写成 $(".XXX").on(".wsdel-ok", "click", function(event) {}

推荐问题