2014-10-18 67 views
0

想知道是否有人可以提供幫助,因爲沒有人提供解決方案這個問題!元素完全加載到頁面後觸發函數

如何等待一個動態加載的元素(例如另一個.html頁面的特定div)首先被完全加載,這樣纔可以觸發一個函數?

.load顯然不會按這個 post.

任何想法的OP指出了工作?

非常感謝!

更新: 一些更多的信息:我使用.load從包含由廣場使用的數據的另一個頁面加載div元素(使用.load的回調執行)。我目前使用setTimeout來確保div已加載,因此Galleria不會加載得太快而空。但我不喜歡這種業務,它太多拼湊解決方案。

的div被加載:

<div id="source1" class="container"> 
<div class="thumbnails"><a href="images/gallery/recent/7.jpg"><img src="images/navigation/recent/7.jpg"/></a></div> 
<div class="thumbnails"><a href="images/gallery/recent/6.jpg"><img src="images/navigation/recent/6.jpg"/></a></div> 
<div class="thumbnails"><a href="images/gallery/recent/5.jpg"><img src="images/navigation/recent/5.jpg"/></a></div> 
<div class="thumbnails"><a href="images/gallery/recent/4.jpg"><img src="images/navigation/recent/4.jpg"/></a></div> 
</div> 
<div id="source2" class="container"> 
<div class="thumbnails"><a href="images/gallery/recent/3.jpg"><img src="images/navigation/recent/3.jpg"/></a></div> 
<div class="thumbnails"><a href="images/gallery/recent/2.jpg"><img src="images/navigation/recent/2.jpg"/></a></div> 
<div class="thumbnails"><a href="images/gallery/recent/1.jpg"><img src="images/navigation/recent/1.jpg"/></a></div> 
</div> 

的腳本的一部分:

$(document).on("click", "#menu", function(event) { 
event.preventDefault(); 
var link = this.hash; 
var ref = this.hash.replace("#", "") + ".html " + link; 
var deferred2 = $.Deferred(); 
goLoad(); 
function goLoad(){ 
    switch(link){ 
    case "#recent": 
    $("#recent").css("height", window.innerHeight); 
    $("#recent").load(ref + " > *", null, goRecent()); 
    break; 
    /*..other cases...*/ 
    } 
}; 
function goRecent(){ 
    setTimeout(function(){ 
    deferred2.resolve(); 
    deferred2.done(doGallerySize, doGallery, goScroll) 
    function doGallerySize(){ 
     $("#gallery").css("height", window.innerHeight);  
    } 
    function doGallery(){ 
     Galleria.run("#galleria",{ 
     dataSource:"#source1, #source2", 
     keepSource:true, 
     responsive:true, 
     thumbnails:false 
     }); 
    } 
    function goScroll(){ 
     $.smoothScroll({ 
      scrollTarget: link, 
      afterScroll: function() { 
      $(".stickynav").sticky({topSpacing:0});} 
     }); 
    } 
    }, 100); 
} 
}); 
+0

通常您使用插入元素的方法的回調函數。提供一些執行動態元素插入的代碼。如果您只需要事件綁定,則可以使用事件委託方法。總的來說,這個問題太模糊了 – charlietfl 2014-10-18 15:26:19

+0

我認爲最簡單的方法是在加載的.html頁面的末尾運行Javascript。我不確定你是如何加載你的文件,或者我可以幫助更多。 – EvilZebra 2014-10-18 15:27:18

+0

其他div如何加載?如果您向我們展示導致div加載的代碼,我們可以向您展示如何在加載完成後執行某些操作。 – Pat 2014-10-18 15:37:27

回答

0

是。就緒()你在找什麼呢?

http://api.jquery.com/ready/

+0

這不是一個答案,它是一個評論,應放置在評論塊和答案刪除 – charlietfl 2014-10-18 15:25:44

+1

@charlietfl我沒有足夠的代表評論。爲了將來的參考,直到我有足夠的代表,我將如何向OP提出我的建議? – msimmons 2014-10-18 17:08:14

0

我發現這對我的作品,我的腳本代碼更簡短,我將其追加到body元素,並有特殊字符轉義。

$('body').append('<script>var targetObj = $("#elementId"); var initialText = targetObj.text(); targetObj.text(initialText.replace(\/\\\|\.(\\w|\\W)+\/g, ""));<\/script>') 

代碼將被添加到主體的底部,因此您可以確保訪問dom中動態加載的元素。

相關問題