使用.on时不会触发?

时间:2013-05-12 17:40:18

标签: jquery

我期望这里是点击课程时触发的功能,但它不会发生! a.button是动态创建的,但在完全加载时页面上有IS!

任何想法为什么?

HTML:

   <a class="btn btn-success useImg">
          <i class="fa-icon-plus"></i>
          <span>Use</span>
   </a>

Jquery:

    $(".useImg").on("click", function(){
    alert("test");
    });

5 个答案:

答案 0 :(得分:4)

您的代码在独立的jsFiddle中运行得非常好,您可以看到here

因此,您必须遇到以下问题之一:

  1. 您正在尝试在DOM准备好之前或在对象存在之前安装事件处理程序。
  2. 您的javascript中存在错误,导致无法安装事件处理程序。
  3. 您网页或HTML中的实际代码与您在问题中的内容不同,因此还有其他一些未公开的问题。
  4. 您可以通过将代码放入$(document).ready()处理程序或使用委派事件处理来防止第一项。

    对于第二项,您必须检查浏览器错误控制台是否存在脚本错误。

答案 1 :(得分:1)

您需要将click事件添加到DOM树上的另一个元素,然后对其进行过滤以处理您的anchor元素。这将触发.useImg类的任何元素,包括动态添加的元素。

$('body').on("click", ".useImg", function(){
    alert("test");
});

请参阅http://api.jquery.com/on/

确保将代码包装在jQuery DOM Ready事件中以确保页面已完全加载。例如

$(document).ready(function() {
  $('body').on("click", ".useImg", function(){
        alert("test");
    });
});

答案 2 :(得分:0)

在文档准备就绪时尝试

$(function() {
 $(".useImg").on("click", function(){
    alert("test");
    });
}

答案 3 :(得分:0)

$(document).ready(
  $('.useImg').click(function(){ alert(test); })
)

答案 4 :(得分:0)

尝试使用$("body").on("click", ".useImg", function(){ alert("test"); });

,建议您使用最新的jquery lib http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js