Jquery附加到(动态由id)

时间:2012-05-21 16:11:41

标签: javascript jquery

假设我有id参数和两个选择框

的功能
<select id="one" onchange="Fill(2)"></select>
<select id="two" onchange="Fill(3)"></select>
<select id="three"></select>

我的功能

function Fill(id){  
//some manupulation
$('<option/>').val(substr[0]).html(substr[1]).appendTo('#two');
}

但不是做很多

if(id==2) {$('<option/>').val(substr[0]).html(substr[1]).appendTo('#two');}
if(id==3) {$('<option/>').val(substr[0]).html(substr[1]).appendTo('#three');}

我想要像

这样的东西
$('<option/>').val(substr[0]).html(substr[1]).appendTo(DYNAMIC);

5 个答案:

答案 0 :(得分:6)

您可以使用select-1select-2等ID来更轻松,然后使用'#select-' + id

否则你需要一个映射对象,它从数字映射到拼写数字。

答案 1 :(得分:2)

function Fill(id){  
  var index = {
    1: 'one',
    2: 'two',
    3: 'three'; 
  };
  $('<option/>').val(substr[0]).html(substr[1]).appendTo('#' + index[id]);
  // or just, but in this case you need to change the *id* pattern like opt_1, opt_2 etc
  $('<option/>').val(substr[0]).html(substr[1]).appendTo('#opt_' + id);
}

答案 2 :(得分:0)

比你想象的容易:)

<select id="select-1" onchange="Fill(2)"></select>
<select id="select-2" onchange="Fill(3)"></select>
<select id="select-3"></select>

function Fill(id){ // 
    //some manupulation
    $('<option/>').val(substr[0]).html(substr[1]).appendTo('select-' + id);
}

答案 3 :(得分:0)

将此行添加到填充功能的顶部:

 var DYNAMIC = $(this);

答案 4 :(得分:0)

我将选择David Thomas的建议:

<select id="one" onchange="Fill(this);"></select>
<select id="two" onchange="Fill(this);"></select>
<select id="three"></select>

将填充功能定义为:

function Fill(select) {
    $('<option />').val(/*..*/).html(/*..*/).appendTo($(select));
}

然后,您可以为您的选择提供您想要的任何ID,并且您不必查询DOM来查找对象。