2010-01-14 21 views
9

tôi muốn lặp qua tất cả thả xuống chọn với một tên lớp nhất định và thêm một mục vào nó và tôi đang chỉ phải vật lộn với bộ chọn đúngBộ chọn jquery chính xác để có được tất cả các trình đơn thả xuống được chọn với một tên lớp nhất định là gì?


EDIT: Tôi phải làm gì đó sai như hầu hết các câu trả lời chấp nhận upvoted dường như không làm việc vì vậy tôi nghĩ rằng phải có một số quirk trong mã của tôi. Tôi đã dán cả HTML và mã jquery bên dưới. cho tôi biết nếu điều này có ý nghĩa.


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> 

vv. . .

mã jquery:

$('select.componentSelect').each(function() { 
     var select = $(this); 
     $(select).children('option').each(function() { 
      if ($(this).text() == currentComponentName) { 
       $(this).remove(); 
      } 
     }); 

    }); 

Trả lời

6

Để trả lời câu hỏi mới, bạn có thể sử dụng các dòng sau để loại bỏ tất cả <option> s chứa một currentComponentName:

$('select.componentSelect option:contains("' + currentComponentName + '")').remove(); 

Demo

11

Bạn nên sử dụng .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>'); 
    ); 
}); 

Để biết thêm thông tin về làm thế nào để chọn đúng các yếu tố với jQuery, hãy nhìn vào http://docs.jquery.com/Selectors.

1

Bạn cần phải sử dụng bộ chọn .className, như thế này:

$('select.className') 

chọn này kết hợp element selector (phù hợp với tất cả <select> yếu tố) với bộ chọn className (phù hợp với tất cả các yếu tố có chứa các lớp className) để tìm tất cả các thành phần <select> với lớp đó.

+0

Tại sao điều này lại bị bỏ phiếu? – SLaks

1

này cung cấp cho một shot:

$('select.className').each(function() { 
    var currentSelect = $(this); 
    // ... do your thing ;-) 
}); 
1

của bạn mã jQuery đã đăng hoạt động cho tôi, miễn là tôi xác định currentComponentName là một trong các tùy chọn bạn chọn. Câu trả lời của Aron Rotteveel rất gần, nhưng phần phụ thêm một chút, hãy thử điều này:

$('select.componentSelect').each(function() { 
    $(this).append('<option value="foo">Bar</option>'); 
}); 
Các vấn đề liên quan