2013-07-10 91 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