2014-09-13 108 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成功。

相關問題