【问题标题】:jQuery load()/event delegation IssuejQuery load()/事件委托问题
【发布时间】:2013-07-10 22:03:05
【问题描述】:

好的,我刚刚发现了事件委托,Click Issue: Dynamically Generated Links Not Triggering Click Function我的问题如下。

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,因为这是加载初始负载的位置?!

$(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);
    });
});

提前感谢所有帮助。

【问题讨论】:

  • 你的控制台说什么?
  • 你的网络标签说什么?
  • 网络选项卡似乎正在调用 ajax.php 文件,响应为 200。

标签: javascript jquery html event-delegation


【解决方案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 不是动态创建的。

【讨论】:

  • 很确定应该是$.get,他使用了$.load,并且只有在数据作为对象提供时才使用POST方法,否则假定为GET。
  • 很确定它会以任何一种方式工作。我几乎总是使用$.post 进行测试,然后将其更改为$.get
  • 这清除了#accountActivity,如果我改变它,使用 $.get 不会做任何事情。
  • 这意味着您没有从ajax.php 得到您期望的响应。检查您的控制台,看看发生了什么。
  • 知道了,你上面的sn-p中有value,它正在寻找val,非常感谢你的帮助,非常感谢。
【解决方案2】:

我认为您的想法是正确的,只是语法对我来说似乎有点不对劲。我在这做准备,有点像 jQuery 菜鸟,如果它不起作用,请耐心等待:

将第二个代码块改为:

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

我也总是使用 alerts() 来确定它是否接收到某些变量。在为 pid 分配值后尝试发出警报(即:alert(pid);)。如果它是空白的,你就知道它没有被正确分配。如果它根本没有出现,那么它面前就有麻烦了。

【讨论】:

  • 由于li元素的动态创建,他必须使用.on()(委托事件)。
猜你喜欢
  • 2013-10-23
  • 1970-01-01
  • 2013-06-18
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多