【问题标题】:JQuery Click On Appended Elements Not Working For DropdownJQuery单击附加元素不适用于下拉
【发布时间】:2012-04-19 13:31:26
【问题描述】:

在我清空下拉菜单的内容并添加新内容后,我无法让下拉菜单继续工作。

这是我遇到问题的页面(请先尝试选择壁纸分辨率,然后从顶部的 5 中选择不同的壁纸并重试): http://www.nba.com/warriors/wallpapertest_020.html

在 $(document).ready 我有:

        $(".dropdown dd ul li a").click(function() {
            var text = $(this).html();
            $(".dropdown dt a span").html(text);
            $(".dropdown dd ul").hide();
        });

这第一次工作正常,但是当我更改下拉列表的内容时,它停止工作。有没有办法调用 .ready() 函数来识别新添加的内容?或者有更好的方法来做到这一点?

我也尝试过这样的 delegate(),但这会阻止它完全发挥作用:

       $(".dropdown dd ul li").delegate('a', 'click', function() {
            var text = $(this).html();
            $(".dropdown dt a span").html(text);
            $(".dropdown dd ul").hide();
        });

任何帮助将不胜感激:)

【问题讨论】:

  • 你试过使用 .on() 吗?
  • @Sven 问题依旧:[(nba.com/warriors/wallpapertest_021.html)]

标签: jquery delegates click append bind


【解决方案1】:

尝试使用on()

$(".dropdown dd ul li a").on('click', function() {
            var text = $(this).html();
            $(".dropdown dt a span").html(text);
            $(".dropdown dd ul").hide();
        });

【讨论】:

  • 尝试发布一些相关的 html。我的笔记本电脑速度较慢,几乎无法调试页面。
  • 嘿,我用 live() 让它工作了:$(".dropdown dd ul li a").live('click', function() {。我的印象是使用 live() 不是一个好习惯......
  • 您必须使用旧版本的 jquery。 .live 已弃用并替换为 .on api.jquery.com/live
  • jquery noob here.. 同样的问题.. 同样的解决方案。但这对我来说毫无意义 - 因为我正在使用jquery-1.7.2.min.js,而.live 应该被贬值......但是.on.live 工作时失败(在我的情况下)。
猜你喜欢
  • 1970-01-01
  • 2011-05-25
  • 2012-06-07
  • 1970-01-01
  • 2017-11-05
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多