Reputation: 1043
Lets say i have function with id paremeter and two select box
<select id="one" onchange="Fill(2)"></select>
<select id="two" onchange="Fill(3)"></select>
<select id="three"></select>
My function
function Fill(id){
//some manupulation
$('<option/>').val(substr[0]).html(substr[1]).appendTo('#two');
}
But instead of doing many
if(id==2) {$('<option/>').val(substr[0]).html(substr[1]).appendTo('#two');}
if(id==3) {$('<option/>').val(substr[0]).html(substr[1]).appendTo('#three');}
i want something like
$('<option/>').val(substr[0]).html(substr[1]).appendTo(DYNAMIC);
Upvotes: 1
Views: 1724
Reputation: 10907
Add this line to the top of Fill function:
var DYNAMIC = $(this);
Upvotes: 0
Reputation: 216
I'm going to go with David Thomas' suggestion:
<select id="one" onchange="Fill(this);"></select>
<select id="two" onchange="Fill(this);"></select>
<select id="three"></select>
With the Fill function defined as:
function Fill(select) {
$('<option />').val(/*..*/).html(/*..*/).appendTo($(select));
}
You would then be able to give your selects whatever id that you want, and you would not have to query the DOM to find the object.
Upvotes: 0
Reputation: 87073
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);
}
Upvotes: 2
Reputation: 10202
easier than you think :)
<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);
}
Upvotes: 0
Reputation: 318488
You could make it much easier by using ids such as select-1
, select-2
etc. and then use '#select-' + id
.
Otherwise you need a mapping object which maps from digits to spelled numbers.
Upvotes: 6