2014-07-02 96 views
0

免責聲明:我是新來的JQueryJQuery的處理事件時,在運行時產生的元素

我不知道如何標題這個問題,但我的第一個代碼低於

$(document).on("click" ,'[id^="picChangeAddress"]', function() { 
    $('div[id^="divAddressSet"]').toggle(); 
}); 

請不要說我有相同數量的div和checkboexes,每個名稱格式也相同,例如複選框picChangeAddress1, picChangeAddress2等等,div的divAddressSet1, divAddressSet2等等。

我已經使用了上面的代碼,因爲這些ID是在運行時生成的。當我點擊一個複選框時,我需要先詢問幾件事情,它會影響頁面上的每個格div[id^="divAddressSet"],當我點擊[id^="picChangeAddress"]複選框時,它們全部切換。我希望你能幫我一次只顯示或隱藏一個div。

任何想法?

回答

2

您可以從ID中提取號碼,那麼你可以使用ID選擇隱藏DIV

$(document).on("click" ,'[id^="picChangeAddress"]', function() { 
    var num = parseInt(this.id.match(/\d+/)[0],10); //Extract number 
    $('#divAddressSet'+num).toggle(); 
}); 
+2

吧!但我認爲不需要解析。 – Jai

+1

@Jai,是的,但始終是安全的。 – Satpal

+0

我通常不使用'.match()',但似乎是一個很好的朋友。 – Jai

1

您需要從ID中提取的數量和使用,讓您定位正確的選擇:

$(document).on("click" ,'[id^="picChangeAddress"]', function() { 
    $('div[id="divAddressSet'+this.id.substring(16)+'"]').toggle(); 
}); 
1

試試這個:

$(document).on("click" ,'[id^="picChangeAddress"]', function() { 
    var o = this.id.split('').pop(); 
    $("#divAddressSet"+o).toggle(); 
}); 
+1

注意:只適用於數字<10 – CodingIntrigue

+0

@Rraham是好的。 – Jai

+0

@Rraham然後Satpal有正確的答案。 – Jai