我可以帮您翻译成中文:在jQuery中,我可以再次调用函数Ready()吗?

3
我有这段代码
   $(".insert").click(function(){
            $(".insert").ajaxStop(function(){
                $(".load").hide();
            });
            $(".insert").ajaxStart(function(){
                $(".load").show();
            });

            $.ajax({
                type: "GET",
                url: "edit.php",
                data: "action=add",
                success: function(msg){

                    $(".control").append(msg);
                }
            });


        });

正如您所看到的,此代码将edit.php的HTML响应附加到.control中

问题是

在附加HTML后..所有jQuery更改都不会应用于它..因为$(document).ready()已经在此HTML代码生成之前调用了...

我可以在进行任何更改时每次调用$(document).ready()吗?


1
当我操作页面的DOM时,我想应用与页面上应用的相同的jQuery代码。 - Sulaiman
7个回答

9
如果您可以详细说明在document.ready函数中正在做什么,我或许可以提供更具体的帮助。您可能会在live()函数中找到所需内容,该函数模拟将事件应用于对象,即使在调用live()后添加到DOM中也是如此。
不过,回答您的问题,是的,您可以通过执行以下操作来调用事件处理程序:
$(document).ready();

6

请看jQuery live。它旨在自动绑定新元素的事件。它适用于click、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、keydown、keypress和keyup。


这是一个小技术问题,但live()不会重新绑定任何事件。 - nickf
谢谢,nickf。我已经改进了我的措辞。 - Matthew Flaschen

2
我用“开关事件”解决了这个需求,例如:
        $("div.value").off("click");
        $("img.cancelEdit").off("click");

        $("div.value").on("click", function (e) {
            var $this = $(this);
            $this.hide();
            $this.next().show();
        });

        $("img.cancelEdit").on("click", function (e) {
            var $this = $(this);
            $this.parent().hide();
            $this.parent().prev().show();
        });

您可以使用Selector.Live()方法;

1

是的,调用带有参数的 ready 函数(无论它是对函数的引用还是匿名函数),都会将其附加到 jQuery 在事件上调用的函数链中。


1

我喜欢Dan Webb的东西,但他已经很久没有更新LowPro了。而事件委托正是被引入到jQuery 1.3中的“live”事件。 - Nosredna

0

使用on()代替live()。live()存在一些缺陷并已被弃用。


0
如果您需要在文档准备就绪时运行它,请将其包装在$(document).ready(function(){});中,它将在适当的时间运行。
您可以在多个位置为document 的 .ready() 方法添加规则。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接