我可以在jQuery中再次调用函数Ready()

时间:2009-06-16 00:14:14

标签: javascript jquery

我有这段代码

   $(".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更改都不会适用于它..因为在此HTML代码诞生之前已经调用了$(document).ready()...

每当我做任何改动时,我都能调用$(document).ready()吗?

7 个答案:

答案 0 :(得分:9)

如果您可以详细说明您在document.ready函数中正在做什么,我可以提供更具体的帮助。您可以在live()函数中找到所需内容,该函数模拟将事件应用于对象,即使它们在调用live()后添加到DOM中也是如此。

要回答你的问题,是的,你可以通过这样做来调用事件处理程序:

$(document).ready();

答案 1 :(得分:6)

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

答案 2 :(得分: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();

答案 3 :(得分:1)

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

答案 4 :(得分:1)

根据您正在进行的DOM操作的结构,您可以使用事件委派将事件处理程序应用于新创建的DOM元素。

http://www.danwebb.net/2008/2/8/event-delegation-made-easy-in-jquery

答案 5 :(得分:0)

如果您需要在文档准备就绪时运行,请将其打包在$(document).ready(function(){});中,它将在适当的时间运行。

您可以在多个地方为document的.ready()方法添加规则。

答案 6 :(得分:0)

使用on()代替live()。 live()有一些缺点,它是折旧的。