2014-09-13 49 views
1

我希望单击按钮时可以运行函数。当我在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); 
}); 
+0

你在哪里调用该函数? – onetwo12 2014-09-13 15:17:28

+0

@ onetwo12无后顾之忧我解决了它并回答了我自己的问题 – Dano007 2014-09-13 15:19:18

回答

1

当您发布工作,将在第一时间代码解决方案:

$('#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(){})

1

自己解决了这个问题。

以下需要被原来的问题主要代码块

$('.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(); 
}); 

           }); 
+2

请注意,您正在使用相同的'#decline'编号创建多个元素。每个页面只能出现一次id。 – isogram 2014-09-13 15:19:45

+0

@isogram所以我应该使用一个类呢? – Dano007 2014-09-13 15:22:19

+0

是的,这就是他们发明的:) – isogram 2014-09-13 15:22:39

1

由于您没有提供启动单击事件很难调试的代码,但我会假设它实际上是最常见的错误导致此问题:您正在结合之前的单击事件该元素实际存在。这样,浏览器就不会知道新元素也需要点击事件。

例子:

$('.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成功。

相关问题