簡體   English   中英

我可以在jQuery中再次調用函數Ready()

[英]Can I call the function Ready() again in 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更改都不適用於它..因為$(document).ready()在此之前已經調用此HTML代碼誕生了...

每當我做任何改變時,我可以調用$(document).ready()嗎?

如果你可以詳細說明你在document.ready函數中做了什么,我可以提供更具體的幫助。 您可以在live()函數中找到所需內容,該函數模擬將事件應用於對象,即使它們在調用live()后被添加到DOM中也是如此。

要回答你的問題,是的,你可以通過這樣做來調用事件處理程序:

$(document).ready();

看看jQuery live 它旨在自動綁定事件以用於新元素。 它適用於click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,keydown,keypress和keyup。

我通過關閉和再次事件解決了這個需求,例如:

        $("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();

是的,使用參數調用ready函數(無論它是對函數還是匿名函數的引用),都會將它附加到jQuery對事件調用的函數鏈中。

根據您正在進行的DOM操作的結構,您可以使用事件委派將事件處理程序應用於新創建的DOM元素。

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

使用on()而不是live()。 live()有一些缺點,它是折舊的。

如果您需要在文檔准備就緒時運行,請將其包裝在$(document).ready(function(){}); 它將在適當的時間運行。

您可以在多個位置向document的.ready()方法添加規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM