2013-07-10 33 views
0

好吧,我剛剛發現了關於事件代表團,Click Issue: Dynamically Generated Links Not Triggering Click Function我的問題在這裏如下。jQuery加載()/事件委託問題

UL通過jQuery load()調用加載。

<ul id="activityPaganation" class="paganation"> 
    <li>1</li> 
    <li><a href="#">2</a></li> 
    <li><a href="#">3</a></li> 
    <li><a href="#">4</a></li> 
    <li><a href="#">5</a></li> 
    <li><a href="#">6</a></li> 
</ul> 

第一塊jQuery將加載上面的UL與異教鏈接。 jquery的第二部分從你點擊的異教鏈接中獲得異教頁碼,現在問題:

一旦你點擊一個異教鏈接,我無法獲得更新的頁面加載到#accountActivity,這是一個委託問題或者我試圖做的事情是不可能的,是異教徒的鏈接不能看到#accountActivity,因爲這是inital負載加載到?!

$(document).ready(function() { 
    if($('#accountActivity')) { 
     $('#accountActivity').load('ajax.php?id=3'); 
    } 

    $(document).on("click", "#activityPaganation li a", function(e) { 
     e.preventDefault(); 
     var pid = $(this).text(); 
     $('#accountActivity').load('ajax.php?id=3&value='+pid); 
    }); 
}); 

在此先感謝您的一切幫助。

+0

你的控制檯說什麼? – tymeJV

+0

你的網絡標籤說什麼? –

+0

Network選項卡似乎在調用ajax.php文件,響應爲200. – llanato

回答

1
$(document).ready(function() { 
    if($('#accountActivity')) { 
     $('#accountActivity').load('ajax.php?id=3'); 
    } 

    $('#activityPaganation').on("click", "li a", function(e) { 
     e.preventDefault(); 
     var pid = $(this).text(); 
     $.post('ajax.php',{id:'3',value:pid},function(response) { 
      $('#accountActivity').html(response); 
     }); 
    }); 
}); 

IF #activityPaganation不是動態創建的。

+0

非常確定應該是$ .get,他使用$ .load,並且僅在數據作爲對象提供時才使用POST方法,否則,GET假設。 – dave

+0

很確定它會以任何方式工作。我幾乎總是使用'$ .post'進行測試,然後將其更改爲'$ .get'。 – DevlshOne

+0

這將清除'#accountActivity',如果我改變它使用$ .get是不會做任何事情。 – llanato

0

我認爲你有正確的想法,只是語法似乎有點關閉給我。我在這裏即興發揮,並有所jQuery的小白,所以忍耐一下,如果它不工作:

更改代碼的第二塊:

$('#activityPaganation li a').click(function(e) { 
    e.preventDefault(); 
    var pid = $(this).text(); 
    $('#accountActivity').load('ajax.php?id=3&value='+pid); 
}); 

我一直使用警報()以及找出它是否挑選了某些變數。嘗試在爲pid賦值(即:alert(pid);)後發出警報。如果它是空白的,你知道它沒有正確分配。如果它根本沒有出現,那就有麻煩了。

+1

由於動態創建'li'元素,他必須使用'.on()'(委託事件)。 – DevlshOne