2012-02-01 72 views
2

我有一個表單多行,每行都有一個鏈接刪除按鈕。我想逐步增強鏈接以將引導模式添加到這些按鈕。所以我正在做的是:單擊事件被添加到每個點擊

  1. 抓住頁面上的所有刪除按鈕元素。
  2. 循環顯示每個按鈕。
  3. 對於每個按鈕,根據單擊按鈕更改模式中的某些屬性,包括在「確定」被選中時調用的URL。

除了每次觸發模式並單擊「確定」按鈕時,所有的工作都像我想要的那樣,附加到該URL的URL被附加到前一個。

http://jsfiddle.net/bittersweetryan/9TpX8/(單擊刪除按鈕,然後確定不止一次,有您的控制檯打開)

下面的代碼

//anonymous function to grab all delete buttons and turn into a modal 
(function(){ 
    var delBtn = $(".delete"), 
     $modal = $("#modal-delete"); 

    if(!$modal.size()){ 
     $modal = $('<div id="modal-delete" class="modal hide fade"><div class="modal-header"> <a href="#" class="close">&times;</a><h3>Confirm Delete</h3></div><div class="modal-body" id="modal-content"></div><div class="modal-footer"> <a href="#" id="okButton" class="btn danger">OK</a> <a href="#" id="cancelButton" class="btn secondary">Cancel</a> </div></div>').appendTo("body"); 
    } 

    delBtn.each(function(){ 
     var $button = $(this), 
      clickHandler, 
      href= $button.attr("href"); 

     if(href){ 
      clickHandler = function(){ 
       console.log(href); 
       //return window.location=href; 
      }; 
     } 
     else{ 
      clickHandler = $button.click; 
     } 

     $button.attr("data-toggle","modal"). 
       attr("data-target","#modal-delete"); 

     $button.on("click",function(){ 
      $modal.find("#okButton").on("click",function(){ 
       clickHandler(); 
       $modal.modal('hide'); 
      }). 
      end(). 
      find("#cancelButton").on("click",function(){ 

       $modal.modal('hide'); 
      }). 
      end(). 
      find("#modal-content").html($button.attr("title")); 
     }); 
    }); 

})(); 

回答

3

你另附單擊處理程序「OK」每次你調用一個對話框。快速修復:

$modal.find("#okButton").one("click",function(){ 
    clickHandler(); 
    $modal.modal('hide'); 
}) 

Your updated fiddle.

+0

謝謝,我將不得不閱讀一個函數的API文檔。不知道存在。 – bittersweetryan 2012-02-01 17:02:43

1

一般情況下,使用jQuery結合處理堅持隊列中的新的處理程序;它不會用新的覆蓋現有的處理程序。

本燙傷多次,大多試圖正確地綁定到動態生成控件後,我剛開始建立的onclick綁定之前在隊列中堅持

.unbind("click") 

Some new fiddle.

+0

謝謝,這也是一個不錯的選擇。我選擇第一個作爲答案的原因是因爲它消除了一個fn電話,但我會給你一個工作解決方案upvote。 – bittersweetryan 2012-02-01 17:04:41