2014-04-01 52 views
0

我已經將事件綁定到單擊圖標上。該事件會更改頁面上按鈕的ID。我想要一個新事件綁定到該新ID,並綁定到舊ID的現有事件被解除綁定。我該怎麼做呢?使用jquery更改按鈕事件綁定

我可以從Firebug看到,單擊圖標時按鈕ID成功更改。但是,當我查看POST時,發現id爲「Final_Approval」的隱藏字段的值爲「Approved」,它告訴我發生了與原始按鈕ID相關的事件,而我不希望它發生。我所有的jquery都在文件準備好了。

原來的按鈕:

<button id="btn-final-approval-no-review" class="btn btn-warning" type="submit">Final Approval</button> 

的原始事件綁定到該ID:

$('[id^="btn-final-approval"]').click(function() { 
    $("#Final_Approval").val("Approved"); 
}); 

事件觸發點擊圖標時:

$("#add-vendor-item").click(function() { 
    $('#btn-final-approval-no-review').attr('id', 'btn-vendor-rep-review2'); 
} 

我的新事件想要發生:

$("#btn-vendor-rep-review2").click(function() { 
    $("#ItemRequestStatusId").val("@Portal.BusinessModel.Entities.ItemRequestStatusId.VendorRepReview"); 
}); 
+0

**不要更改ID **,也不要期望在頁面加載上綁定的事件處理程序突然開始使用剛剛更改的元素。它在綁定時與選擇器不匹配,所以它沒有綁定,期限! – adeneo

回答

0

將事件綁定到動態變化的元素,你需要使用代表團on()

$(document).on('click', '[id^="btn-final-approval"]', function() { 
    $("#Final_Approval").val("Approved"); 
}); 

正如adeneo說,你可能不應該走動ID,您應該使用類。但同樣的想法適用,您只需更改on()調用中的選擇器。

+0

我還將此添加到綁定到原始ID的單擊事件中。我將重寫我的代碼以使用類而不是id。 –

0

在委託上使用可以動態地綁定點擊事件。

$("body").on("click","#btn-vendor-rep-review2", function() {  
    $("#ItemRequestStatusId").val("@Portal.BusinessModel.Entities.ItemRequestStatusId.VendorRepReview"); 
}); 
0
$(document).on('click', '#finalApproval', function() { 

if($(this).hasClass('first')){ 
    $(this).removeClass('first'); 
    //first action to be preformed  
}else{ 
    //second action to be preformed. 
} 


}); 

然後簡單地添加first類網頁加載的按鈕。

如果你需要它來切換回你可以在第二個動作重新添加類first被預製面積 編輯

重新閱讀你的問題可能不能使用this後 - 剛剛替補與有問題的項目的id/class並將if/else語句添加到該項目的處理程序。