代码之家  ›  专栏  ›  技术社区  ›  Isaac

jquery.click()事件问题

  •  2
  • Isaac  · 技术社区  · 17 年前

    以下是我的代码片段:

        $(".item").click(function () {
            alert("clicked!");
        });
    

    我在我的页面上有(假设,事实上要复杂得多)以下内容:

    <a href="#" class="item"><img src="1.jpg" /></a>
    

    但是,当我单击图像时,不会收到警报。

    我犯了什么错误?

    7 回复  |  直到 11 年前
        1
  •  4
  •   DLS    17 年前

    第一个问题-是否添加要动态单击的元素?如果是的话, 您应该使用活动事件,因为它将处理动态创建的元素。

    http://docs.jquery.com/Events/live#typefn

        2
  •  5
  •   Matt    17 年前

    您的选择器是否实际匹配任何内容?尝试使用jquery调试插件( http://jquery.glyphix.com/ )这样做:

    $(".item").debug().click(function() {
        alert("clicked!");
    });
    

    .debug()将记录与Firebug控制台匹配的内容(您正在使用Firebug,对吗?:-))不需要“断链”,这样就可以像这样直接使用它。

    如果结果正确,在浏览器导航到“”之前,可能会出现一些问题。尝试对事件对象使用.preventDefault()方法以防止此行为:

    $(".item").click(function(evt) {
        evt.preventDefault();
        alert("clicked!");
    });
    
        3
  •  0
  •   Shaun    17 年前

    使用绑定。

    $(“.item”).bind(“单击”,函数(e)…(});

        4
  •  0
  •   Andy Gaskell    17 年前

    修改选择器?

    $(“.item>img”)。

        5
  •  0
  •   Mac    17 年前

    在添加上下文菜单jquery插件之后,我最近遇到了这个问题。插件绑定到主体的click事件,然后取消绑定click事件-它似乎删除了所有元素的click事件的所有绑定。也许是一个建议,关闭插件或检查你没有解除绑定点击父元素自己。

        6
  •  0
  •   nickf    17 年前

    你发布的代码是正确的,所以我怀疑还有其他事情你没有考虑过。

    首先,如果在某个地方(甚至不在那个确切的代码位中)出现错误,可能会导致它停止工作。在这一行后面加一个警报,检查它是否运行。

    检查是否没有其他元素捕获事件并阻止其传播。这以前咬过我…如果还有其他事情需要处理, stopPropagation() 或 return false 这可能就是问题所在。

        7
  •  0
  •   Dan G    17 年前

    我发现了一件事(尽管只有链接会转到其他地方),那就是添加return false;如果它只是触发锚而不是评估警报,那么在may中可能会有所帮助。我不能说为什么会这样,但这是我最近发现的一个类似问题的解决方案。