mục tiêu đầu vào theo loại và tên (bộ chọn)


132

Tôi cần thay đổi một số đầu vào hộp kiểm thành đầu vào ẩn cho một số nhưng không phải tất cả đầu vào trên một trang.

<input type="checkbox" name="ProductCode"value="396P4"> 
<input type="checkbox" name="ProductCode"value="401P4"> 
<input type="checkbox" name="ProductCode"value="F460129">

Mã jquery bên dưới chỉ chọn đầu vào theo loại khiến tất cả các hộp kiểm thay đổi thành đầu vào ẩn Có cách nào để kiểm tra cả hai loại đầu vào = "hộp kiểm" và tên = "ProductCode" làm công cụ chọn để tôi có thể nhắm mục tiêu cụ thể rằng tôi muốn thay đổi?

$("input[type='checkbox']").each(function(){
var name = $(this).attr('name'); // grab name of original
var value = $(this).attr('value'); // grab value of original
var html = '<input type="hidden" name="'+name+'" value="'+value+'" />';
$(this).after(html).remove(); // add new, then remove original input
});

Câu trả lời:


285

Bạn muốn có nhiều bộ chọn thuộc tính

$("input[type='checkbox'][name='ProductCode']").each(function(){ ...

hoặc là

$("input:checkbox[name='ProductCode']").each(function(){ ...

Sẽ tốt hơn nếu sử dụng một lớp CSS để xác định những thứ bạn muốn chọn, tuy nhiên, rất nhiều trình duyệt hiện đại thực hiện document.getElementsByClassNamephương thức sẽ được sử dụng để chọn các phần tử và nhanh hơn nhiều so với việc chọn namethuộc tính


Cả hai đều làm việc cho tôi nhưng tôi đã sử dụng phương pháp thứ hai. THX, tôi có một câu hỏi khác nhưng tôi sẽ đặt một câu hỏi mới.
dùng357034

22

Bạn có thể kết hợp các bộ chọn thuộc tính theo cách này:

$("[attr1=val][attr2=val]")...

để một yếu tố phải thỏa mãn cả hai điều kiện. Tất nhiên bạn có thể sử dụng điều này cho hơn hai. Ngoài ra, đừng làm [type=checkbox]. jQuery có một bộ chọn cho điều đó, cụ thể là :checkboxkết quả cuối cùng là:

$("input:checkbox[name=ProductCode]")...

Tuy nhiên, bộ chọn thuộc tính chậm, vì vậy cách tiếp cận được đề xuất là sử dụng ID và bộ chọn lớp nếu có thể. Bạn có thể thay đổi đánh dấu của bạn thành:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129">

cho phép bạn sử dụng bộ chọn nhanh hơn nhiều của:

$("input.ProductCode")...

Rõ ràng điều này cũng hoạt động nhưng tôi chỉ có thể cung cấp cho một người tín dụng cho câu trả lời đúng. :) Một điều tôi nghĩ là tôi không thể nhắm mục tiêu theo lớp vì tôi không có quyền truy cập đánh dấu trừ khi tôi thêm một lớp và điều đó sẽ làm gì. Nhưng Thx !!!
dùng357034

6
input[type='checkbox', name='ProductCode']

Đó là cách CSS và tôi gần như chắc chắn rằng nó sẽ hoạt động trong jQuery.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.