2015-02-06 118 views
0

我有一個頁面,可以通過單擊按鈕動態加載帶有.get請求的內容。加載的HTML頁面無法獲得任何jquery選擇器來定位該頁面上的任何內容。 我試着把頁面上的警報腳本加載,也沒有運氣。Jquery選擇器不能使用動態.get加載的內容

我認爲正在發生的事情是,當頁面加載時,我試圖鎖定的內容不存在,並且在頁面加載時不再檢查內容?這只是我的猜測,任何幫助將不勝感激。

這是頁面內容動態加載到主頁面的地方。

$(".load-page").click(function(){ 
    var href = $(this).attr("data-href"); 
    $.get(href,function (hdisplayed) { 
     $("#content").html(hdisplayed); 
    }); 
}); 

這是我使用來選擇頁面上的內容是什麼。

$(function() { 
    $("#div").click(function(){ 
    alert("hello"); 
}); 

回答

1

嘗試使用現場處理程序:

$(document).on('click', '#div', function() { 
    alert("hello"); 
}); 

它綁定到文檔,並同時.click()被綁定到確切時.click()被稱爲已經存在的元素動態地添加內容的作品。

關於jQuery的on()方法,另請參閱詳細的documentation

+0

我的上帝非常感謝你。這一整天都在做這個工作,並一直在想我的選擇器早就搞亂了。這樣做更有意義 – worlddev 2015-02-06 01:52:17

1

您想要使用.on()將附加到動態添加的元素。

$(function() { 
    $("body").on('click', '#div', function() { 
    alert("hello"); 
    }); 
}); 

另外,不要給元素與股利或跨度或其他元素名稱它只是不好的做法ID。我會推薦使用有針對性的類選擇器而不是id,特別是對於動態生成的內容。因爲我不確定代碼的結構(您的#div元素的位置),所以我還將body設置爲您的目標。

0

事件處理程序將與父元素上的'.on'一起使用。但是,如果您只需要選擇動態加載的元素進行其他操作,則需要等待內容實際加載。

$('#parent_element').load(
    url, //url for the AJAX request 
    {}, //data to be sent with the request 
    function(){ //this function will be called when content has loaded 
     $('#dynamic_child_element').css('background','#000'); 
    } 
);