2013-10-03 29 views
1

我使用的是Google Maps API,並且有很多html通過使用.html()等腳本注入。我有幾個觸發器設置用於選擇注入的元素,但由於HTML不是「準備好」或「加載」它,它無法選擇。通過Javascript創建的元素上的jQuery

我認爲一個簡單的$(window).load會工作,但它似乎不是。

這是我到目前爲止的代碼:

$(window).load(function(){ 
    $('ul.campaign-list li a').on('click', function (e) { 
     $("html, body").animate({ scrollTop: "300px" }); 
     alert("Scrolls"); 
    }); 
}); 

我使用的。對,而不是.live(),但我也猜測這是做正確的方式。我添加了alert();在測試我的代碼,但唉,它仍然無法加載。

任何想法?

感謝, [R

回答

2

編輯:

$('#container_12').on('click', 'a', function(){ 
    $('html, body').animate({ 
    scrollTop: 300 
    }, 500); 
}); 

在聊天的討論中,我們精確定位的問題,並相應地固定之後,我會保持原來的答案,以便它可以幫助這樣的人案件。

當爲了得到它的動態內容的工作,你需要指定容器或環境中使用.on()

$('ul.campaign-list li a').on('click', function (e) { 
    $("html, body").animate({ scrollTop: "300px" }); 
    alert("Scrolls"); 
}); 

變爲:

$(window).on('click', 'ul.campaign-list li a', function (e) { 
    $("html, body").animate({ scrollTop: "300px" }); 
    alert("Scrolls"); 
}); 

請注意,您可以用任何替換窗口未動態添加的容器。

有關更詳細的說明,請參閱.on()文檔。

+0

我認爲這將工作太,謝謝,但它並沒有做警報所以我假設它不工作。我的控制檯中沒有錯誤。 –

+0

@rdck它是否仍然包裹在$(window).load()函數中?如果這樣刪除它,並用'$(function(){代碼在這裏})替換它;' –

+0

是的,做到了。這裏有一個生活的鏈接:http://goo.gl/zER1UD –

0
  1. jQuery使用不同的方法,以確保DOM準備好,所以不是$(window).load使用:

    $(document).ready(function() { 
        // Handler for .ready() called. 
    }); 
    
  2. 在使用上,你要綁定到容器上必須存在,當頁面被加載,所以如果你想要一個click事件綁定到a這是動態添加,你需要將on綁定到容器,不是動態的:

    $('ul.campaign-list li').on('click','a', function (e) { 
        $("html, body").animate({ scrollTop: "300px" }); 
        alert("Scrolls"); 
    }); 
    
+0

'$(document).ready()'檢查是否該dom準備好沒有加載(圖片等)。 –

+0

@PatsyIssa - 只是一個未使用的單詞,顯然我的意思是'準備好':) – Tomer

0

對於想要在DOM加載後運行的代碼,請不要使用$(window).load,而應使用$(document).ready(function(){...})或快捷方式。另外,您的.on()呼叫僅適用於您撥打電話時存在的元素。我猜你真正想要的是這樣的:

$(function() { 
    $('ul.campaign-list').on('click', 'li a', function (e) { 
    $("html, body").animate({ scrollTop: "300px" }); 
    alert("Scrolls"); 
    }); 
}); 

被點擊的任何東西ul.campaign-list相匹配的元素(一個或多個)內的li a選擇匹配時,這將觸發 - 假設ul元素出現在頁面的HTML上加載。

.live()調用是做等價的:

$(document).on("click", "ul.campaign-list li a", function(ev) { ... }); 

是否有幫助

相關問題