Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery.on()不起作用_Jquery_Html_Event Handling_Handlebars.js - Fatal编程技术网

jquery.on()不起作用

jquery.on()不起作用,jquery,html,event-handling,handlebars.js,Jquery,Html,Event Handling,Handlebars.js,我有以下HTML结构,这是一个模板: <div class="row" id="{{serviceId}}"> <div class="favorites" isfavorite="{{isFavorite}}"> <img src="{{favImg}}" style="width:25px;"> </div> <!-- end .fav

我有以下HTML结构,这是一个模板:

<div class="row" id="{{serviceId}}">
            <div class="favorites" isfavorite="{{isFavorite}}">
                <img src="{{favImg}}" style="width:25px;">
            </div>
            <!-- end .favorites -->
            <div class="service">
                <p class="title">{{serviceName}}</p>
            </div>
            <div class="small serviceStat">

            </div>
            <div class="small metric">

            </div>
            <div class="performance"></div>
            <div class="icon email">
                <img src="../images/email.png" style="width:27px">
            </div>
        </div>
但如果我把它和活生生的绑在一起,它就会起作用:

$('.email').live('click',function(){alert('clicked')});
知道是什么引起的吗?

这段代码

$('.row').on('click','.email',function(){alert('clicked')});

 //or like this:
$('.email').on('click',function(){alert('clicked')})
需要在此范围内:

$(document).ready(function(){
   /* Code goes here */
});
我猜不是。(这是为了确保在DOM就绪后绑定事件)


或者是这样,或者您正在使用旧版本的jQuery
.on
是在最新版本中添加的。

问题是您需要在DOM中[您的
.row
元素将要存在的位置]上方绑定代理处理程序

如果您有:

<div id="item-container">
    <!--divs with class row go in here -->
</div>

这是因为您的模板实例在文档就绪时不存在于DOM中…因此您需要将事件绑定到确实存在的元素…即
项容器

您使用的是哪个版本的jQuery?您使用的是哪个版本的jQuery?如果您使用的是jQuery1.6及以下版本,那么这可能就是您使用错误的.on语法的原因。这个问题已经被问了几百次,如果不是几千次的话。@Kevin B:为什么?语法正确语法正确,但语法版本错误。当前使用的语法用于绑定到现有的.email元素。在这种情况下,.email还不存在(也不存在.row)。(事实证明它可以与
.live
一起工作)谢谢,我知道在新的jquery版本中,live事件最终会被翻译成
。在
上,所以我认为它的工作原理是一样的,并且在创建元素后会自动绑定,这是我的错误。
<div id="item-container">
    <!--divs with class row go in here -->
</div>
$('#item-container').on('click', '.email', function() {alert('clicked'); });