[英]Button does not call function when clicked
我想在单击按钮时运行一个函数。 当我在html体内这样处理时,它工作正常
<div type="button" id="decline" class="btn btn-danger mrs"></div>
但是,我需要它在下面的代码块中工作,该代码块位于underscore.js包装器中。 目前使用以下功能无法执行,我想了解原因? 在错误的地方是id?
$('#containerFriendsPending').empty();
_.each(friends, function(item) {
var wrapper = $('<div class="portfolio-item-thumb one-third"></div>');
wrapper.append('<div type="button"
id="decline"
class="btn btn-danger mrs">' +
'Decline' +
'</div>');
$('#containerFriendsPending').append(wrapper);
});
自己解决了这个问题。
需要在原始问题主代码块中添加以下内容
$('.decline').click(function() {
Friendrequest_decline();
});
这样做有效。
$('#containerFriendsPending').empty();
_.each(friends, function(item) {
var wrapper = $('<div class="portfolio-item-thumb one-third"></div>');
wrapper.append('<div type="button" id="decline" class="btn btn-danger mrs">' + 'Decline' + '</div>');
$('#containerFriendsPending').append(wrapper);
$('.decline').click(function() {
Friendrequest_decline();
});
});
由于您没有提供启动click事件的代码,因此很难调试,但我将假设它实际上是导致此问题的最常见错误:您在元素实际存在之前绑定click事件。 这样,浏览器就不会知道新元素也需要click事件。
例:
$('.test').click(someFunction);
$('body').append( $('<div class="test">Click me!</div>');
这将不起作用,因为click事件首先被绑定,元素将在以后创建。
jQuery .on()
函数可以通过查看在DOM中创建的新元素来处理它:
$('body').on('click', '.test', someFunction);
$('body').append( $('<div class="test">Click me!</div>');
现在它将成功运行someFunction
。
虽然您发布的代码解决方案将在第一时间运行:
$('#decline').click(function() {
Friendrequest_decline();
});
根据您的回答,在替换包装代码后它将无法工作。 您必须使用.on()
来委派事件:
$(document).on('click', '#decline', function() {
Friendrequest_decline();
});
要么
$('#containerFriendsPending').on('click', '#decline', function() {
Friendrequest_decline();
});
例如:
$(document).on('click','#id',function(){})vs $('#id')。on('click',function(){})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.