2014-12-09 115 views
-1

jquery on event不能与选择器一起工作,因为它与Jquery(document)一起工作?Jquery事件不与选择器在哪里工作与JQuery(文档)?

我已经将所有页面脚本移动到js文件,所有工作正常,但事件处理程序附件不适用于元素选择器。

在这里,我移动到js文件后面临的问题:由于某些依赖我使用jQuery的版本1.7.1和2.1.2

这些jQuery的序列

 $(document).ready(function() { 

     //this event is not working 
     $('.add-new').on('click',function(){ 

       //code 

     }); 

     //this event is working fine. 
     $(document).on('click','.add-new', function(){ 

      //code 

     }); 

    }); 

和页面js文件如下。

<script src="/Scripts/modernizr-2.6.2.js"></script> 

<script src="/Scripts/jquery-1.7.1.js"></script> 

//page js where from i have moved all page js to this file 
<script src="/Scripts/ShowCollectionData.js"></script> 

<script src="/Scripts/jquery-2.1.1.min.js"></script> 

和使用的$(document)。在( '点击', '附加新',函数(){})将不会是正确的做法。

我做错了什么地方?

+4

为什么你使用两个不同版本的jQuery? – 2014-12-09 11:31:54

+1

文档准备好时是否存在'.add-new'? – Turnip 2014-12-09 11:32:16

+1

执行文档就绪处理程序时,页面上是否存在'.add-new'元素? – JLRishe 2014-12-09 11:32:49

回答

1
$(document).on('click','.add-new', function(){ 
    //code 
    }); 
    $('.add-new').on('click',function(){ 
    //code 
    }); 

这两个声明都是有效的。

前者适用于动态添加元素。您使用文档是因为您正在委托文档对象的子项上的事件,因此事件会冒泡到文档级别。选择最近的父母也可以更方便(并且父母在加载时必须存在于页面上)。

后者仍然有效,并且是将事件简单地绑定到特定元素的首选方法。

您可以在on()here上阅读更多内容。