2013-05-12 50 views
0

我在这里期望的是点击课程时触发的功能,但它不会发生! a.button是动态创建的,但是当页面被完全加载时,它就在页面上了!使用.on时不会触发?

任何想法为什么?

HTML:

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

的Jquery:

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

尝试,如果代表团帮助反正。 '$(document).on(“click”,“.useImg”,...)' – 2013-05-12 17:42:14

+0

您是否忘记在'$(document).ready(...)'中换行,或许? – 2013-05-12 17:43:20

+0

你使用的是什么版本的jQuery?在1.7中增加了on()'(在此之前建议使用'delegate()')。 – 2013-05-12 17:43:47

回答

1

您需要点击事件进一步增加另一个元素了DOM树,然后筛选到您的锚元素上工作。这将会激发.useImg类的任何元素,包括动态添加的元素。

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

http://api.jquery.com/on/

确保您缠绕代码jQuery的DOM已准备就绪事件,以确保该页面完全加载。例如

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

鉴于元素是(假设)出现在页面加载,这有什么帮助? – 2013-05-12 17:42:53

+0

感谢您的快速响应!尝试过,但是你的想法更好。再次感谢! – Kim 2013-05-12 17:42:56

+4

@Kim不要使用'live'。它很长时间被弃用并从1.9 – 2013-05-12 17:43:59

0

尝试,当文档准备

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

当原始文件不存在时它如何工作? – 2013-05-12 17:44:34

+0

啊...我忘了写$(文件)。就绪()..编辑答案 – draxxxeus 2013-05-12 17:47:33

+1

即使在当时,有一个在重写'on'到'click'没有点 – 2013-05-12 17:48:17

4

你的代码在一个独立的jsfiddle完全没有问题,你可以看到here

因此,您必须对这些问题的一个:

  1. 您要安装事件处理程序之前,DOM是准备或对象存在之前。
  2. 您的JavaScript中有错误,导致无法安装事件处理程序。
  3. 页面或HTML中的实际代码与您在问题中放置的代码不同,因此存在未披露的其他问题。

您可以通过将代码放在$(document).ready()处理程序中或使用委托事件处理来防止第一个项目。

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