我想循环浏览具有某个类名的所有下拉选项,并向其中添加一个项目,我正在努力使用正确的选择器
编辑:我一定是做错了,因为大多数受欢迎的答案似乎都没有用,所以我觉得我的代码中肯定会有一些怪癖。我已粘贴下面的HTML和jquery代码。如果这是有道理的,请告诉我。
HTML:
<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();" class="componentSelect" id="components0" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>
<select onfocus="this.enteredText='';" onkeydown="return handleKey();" onkeyup="event.cancelbubble=true;return false;" onkeypress = "return selectItem();" class="componentSelect" id="components1" name="applicationUpdater.dependencies[0].componentName" >
<option value= 5 >Client</option>
<option value= 79 >Server</option>
</select>
等等。 。
jquery代码:
$('select.componentSelect').each(function() {
var select = $(this);
$(select).children('option').each(function() {
if ($(this).text() == currentComponentName) {
$(this).remove();
}
});
});
答案 0 :(得分:12)
您应该使用.class selector。
// select every <select> element with classname "yourclassname"
$('select.yourclassname').each(function() {
// $(this) now refers to one specific <select> element
// we append an option to it, like you asked for
$(this).append(
$('<option value="foo">Bar</option>');
);
});
有关如何使用jQuery正确选择元素的更多信息,请查看http://docs.jquery.com/Selectors。
答案 1 :(得分:6)
要回答您的新问题,您可以使用以下行删除包含<option>
的所有currentComponentName
:
$('select.componentSelect option:contains("' + currentComponentName + '")').remove();
答案 2 :(得分:2)
试一试:
$('select.className').each(function() {
var currentSelect = $(this);
// ... do your thing ;-)
});
答案 3 :(得分:1)
您需要使用.className
选择器,如下所示:
$('select.className')
此选择器将element选择器(匹配所有<select>
元素)与className选择器(匹配包含className
类的所有元素)组合在一起,以查找所有<select>
元素那个班。
答案 4 :(得分:1)
只要我将currentComponentName
定义为您选择的选项之一,您发布的jQuery代码就适合我。 Aron Rotteveel的回答非常接近,但附加部分有点偏,试试这个:
$('select.componentSelect').each(function() {
$(this).append('<option value="foo">Bar</option>');
});