2013-12-18 34 views
0

我有一個常用按鈕Add Entry和15個<li>項目列表,比如1,2,3 upto 15。所以,當我點擊1時,該按鈕被分配一個編號button_1,類似地爲2,3,直到15.在jQuery和jqueryUI模態框中動態更改ID

現在我對不同的列表項目有不同的模式框。當點擊該通用按鈕Add Entry時,相應於我選擇的列表項打開一個模式框。

有一個全局變量,我在javascript中設置爲add_entry_button_id = 1。在選擇任何<li>項目後,我更新這個變量。

並點擊按鈕,我這樣做。

HTML:

<button id="1_button" class="btn btn-primary pull-right add_entry_button" style="margin-bottom:10px" onclick="add_new_entry_button(add_entry_button_id)">Add New Entry</button> 

這是我的代碼用於打開特定模式對話框

的JavaScript:

function add_new_entry_button(button_id){ 
    console.log(button_id) // shows the current button_id 
    $("#"+button_id+"_button").click(function() { 
     $("#"+button_id+"_form").dialog("open"); 
     console.log(button_id) // shows all the button_ids that i've traversed 
    }); 
} 

說我現在面臨的問題雖然我的模式框打開,但當我c舔多個<li>項目,然後添加按鈕,一系列所有這些模式框也顯示了我以前遍歷的。

例如: - 如果我點擊1,然後添加按鈕,將打開一個模式框。 接下來我點擊3並添加按鈕,3的模態框會打開,然後1的模態框也會打開。

同樣,如果我點擊7並添加按鈕,7的模態框會打開,然後3的模態框,然後1的模態框也會打開。

回答

0

嘗試使用.unbind()從先前按下的添加按鈕中刪除點擊事件。

但在另一個說明中,我可能不會使用ID的這種方式。看來這只是等待發生的很多麻煩。 .data()可能更適合您的情況。

+0

喜歡這個?點擊(function(){(「#」+ button_id +「_ form」).dialog(「open」); } $(「#add _」+ button_id +「_ button」).unbind );' – PythonEnthusiast

+0

有了這個,模態框不會被打開。 – PythonEnthusiast

+0

請使用演示代碼進行推薦。謝謝 – PythonEnthusiast

0

編輯

嘗試這樣的事情

function add_new_entry_button(button_id){ 
    console.log(button_id) // shows the current button_id 
    //unbind all others button 
    $(".btn").unbind("click"); 

    $("#"+button_id+"_button").click(function() { 
     $("#"+button_id+"_form").dialog("open"); 
     console.log(button_id) // shows all the button_ids that i've traversed 
    }); 
} 

注:我會用#button _1,而不是#1_button

+0

No. Button does clicks ... modal box不會爲任何人打開。 – PythonEnthusiast

+0

您可以顯示完整的代碼嗎? – Merlin