2012-08-06 136 views
0

我有此下拉代碼:jQuery選擇輸入號碼

$('#addDropdown').click(function() { 
    var $d = $('<select class="dropdown"><option selected="selected" value="null" rel="null">Choose your data!</option><option value="1" rel="2">Option 1</option><option value="1" rel="2">Option 2</option><option value="14" rel="15">Option 3</option></select><input type="number" min="1" max="99" class="multiplier" name="multiplier" value="1" size="3"/><br/>').fadeIn().delay(1000); 

    $('#dropdownContainer').append($d); 
}); 

和我傳遞的值,以一個Ajax功能與此代碼,我使用一個按鈕,具有相同的值附加更多的下拉菜單:

var dropdowns = $(".dropdown"), 
     one = [], 
     two = [], 
     mult = []; 

for(var i = 0; i < dropdowns.length; i++) { 
    one.push(dropdowns.eq(i).find('option:selected').attr('rel')); 
    two.push(dropdowns.eq(i).val()); 
    mult.push(dropdowns.eq(i).val() * dropdowns.eq(i).find('input[name=multiplier]').val()) 
} 

爲多選項,我想利用所選擇的價值屬性,並與輸入的號碼......我的選擇沒有爲輸入工作值相乘,我該怎麼選擇乘數輸入?

+0

你已經寫了'[名稱=乘數]'?我不明白爲什麼人們根本不閱讀jQuery文檔。閱讀關於jQuery選擇器。他們是非常重要的 – Imdad 2012-08-06 06:22:14

+3

@Imdad'[name = multiplier]'的問題是什麼?聽起來你應該閱讀文檔。 – undefined 2012-08-06 06:23:36

+1

@lmdad這是正確的屬性等於選擇器,OP剛剛得到dom層次結構錯誤,因爲這不是一個後裔 – nbrooks 2012-08-06 06:23:44

回答

1

.find()只找到當前匹配集的後代的元素;既然你想相鄰元素(兄弟姐妹),使用.next()(可能是最好在這種情況下)或.siblings()

for(var i = 0; i < dropdowns.length; i++) { 
    one.push(dropdowns.eq(i).find('option:selected').attr('rel')); 
    two.push(dropdowns.eq(i).val()); 
    mult.push(dropdowns.eq(i).val() * dropdowns.eq(i).next('input[name=multiplier]').val()) 
} 
+1

這個作品完美,非常簡單!感謝您的迴應! – tcd 2012-08-06 06:27:38

+0

@tdun沒問題!此外,類選擇器可能比屬性選擇器執行得更好,所以如果你的''''類具有'multiplier'類,那麼最好使用'input.multiplier'而不是'input [name = multiplier]'。雖然沒有太大的區別(它們都是基於css的) – nbrooks 2012-08-06 06:31:31

+0

我很感謝您的幫助! – tcd 2012-08-06 06:32:52

0
mult.push(dropdowns.eq(i).val() * $('.multiplier').val()) 
+0

我使用了.next()因爲我有多個下拉菜單,每個都有自己的數字輸入,不過謝謝! – tcd 2012-08-06 06:31:53