2012-08-06 114 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