2013-04-30 50 views
0

當用戶點擊twitter引導模式窗口按鈕上的確認按鈕時,我在頁面上執行刪除操作。事件鏈接如何適用於多個對象?

我有兩個按鈕:一個允許用戶取消操作,另一個確認。

當用戶點擊確認刪除按鈕時,當模式隱藏時,我執行我的操作,例如我可以顯示一個動畫並實際刪除該項目。

如果用戶點擊了一些項目,但他/她的選擇是取消按鈕,當他/她點擊他/她想要刪除的項目時,刪除也會在選擇的元素上執行取消。

「hidden」事件一旦執行就不應該與元素分離嗎?

我知道我可以分開事件鏈變化$('#confirmDeleteModal').on('hidden', function() {$('#confirmDeleteModal').off('hidden').on('hidden', function() {但我真的會明白爲什麼會發生這種情況。我錯過了什麼嗎?

的代碼是:

$(document).ready(function(){ 
    $('.delete').on('click', function() { 
     var itemID = $(this).data('product-id') 

     $('#confirmDeleteModal').modal('show'); 

     $('#confirmDelete').on('click', function() { 

      $('#confirmDeleteModal').on('hidden', function() { 
       // Here I do my stuff to perform deletion 
       $('#result').append('This method has been called for ' + itemID + ' <br />') 
      }); 
     }); 
    }); 
}); 

我希望我已經清楚地暴露我的問題。我準備了一個JS斌,以及:http://jsbin.com/inulaw/5/edit

+0

不知道你在問什麼,但是,你應該分離事件,或者至少不要像這樣嵌套事件附件。 – bfavaretto 2013-04-30 02:26:09

+0

我想知道爲什麼會發生這種情況:一旦「隱藏」事件完成後,爲什麼會再次觸發?既然你說我不應該像這樣嵌套事件,那麼有沒有更好的方法來做到這一點? – 2013-04-30 02:32:22

回答

1

這裏的問題是,你是連接每次額外聽衆的clickhidden事件。要解決此問題,請在再次調用.on('eventname')之前鏈接jQuery .off('eventName')方法。

這裏是你的代碼的JS斌更新和偉大的工作:

$(document).ready(function(){ 
    $('.delete').on('click', function() { 
     var itemID = $(this).data('product-id') 

     $('#confirmDeleteModal').modal('show'); 

     $('#confirmDeleteModal').off('hidden'); // must reset from previous 
     $('#confirmDelete').off('click').on('click', function() { 

      $('#confirmDeleteModal').on('hidden', function() { 

        // Here I do my stuff to perform deletion 
        $('#result').append('This method has been called for ' + itemID + ' <br />') 
      }); 
     }); 
    }); 
}); 

編輯:我感動$('#confirmDeleteModal').off('hidden');點擊事件的上方,它重置確認是否被點擊。

+0

我試過了,看起來不起作用。我仍然得到同樣的行爲。我認爲這是因爲當你分離隱藏事件時,事件本身還沒有排隊。 – 2013-04-30 02:38:33

+0

嗯...看看[這jsFiddle](http://jsfiddle.net/mike_marcacci/jCwdN/)我做了。這是不是你打算如何工作? – 2013-04-30 02:45:09

+0

我明白了......我錯過了按鈕本身的關閉('點擊')。這也很奇怪......因爲我只按一次該按鈕,它怎麼能附加其他事件呢? – 2013-04-30 02:57:00

相關問題