javascript - jQuery ile işaretli onay kutularının değerlerini diziye almak
Şu anda işaretlenmiş tüm onay kutularının değerlerini almaya ve bunları bir diziye kaydetmeye çalışıyorum. İşte şu ana kadar yazdığım kod:
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
});
console.log(searchIDs);
});
Ancak bu ihtiyacım olandan daha fazla çıktı veriyor. Sadece değerleri almakla kalmıyor, istemediğim bazı şeyler de geliyor.
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init[3], context: document, jquery: "1.9.1", constructor: function, init: function…]
Sadece kimlikleri istiyorum (bu durumda ilk 3 öğe).
$.each kullanarak ve değerleri bir diziye ekleyerek istediğim çıktıyı elde ediyorum:
$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]
Ancak bir satır kod tasarrufu sağladığı ve daha güzel olduğu için $.map kullanmak isterim.
Teşekkürler
Cevap #1
Oluşan jQuery nesnesini gerçek bir diziye dönüştürmek için en sonda .get() metodunu çağırın.
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
}).get(); // <----
console.log(searchIDs);
});
Dokümantasyona göre:
Dönüş değeri bir dizi içeren jQuery nesnesi olduğundan, sonuç üzerinde bir temel dizi ile çalışmak için .get() çağırmak çok yaygındır.
Cevap #2
DEMO: http://jsfiddle.net/PBhHK/
$(document).ready(function(){
var searchIDs = $('input:checked').map(function(){
return $(this).val();
});
console.log(searchIDs.get());
});
Sadece get() fonksiyonunu çağırın ve dizinizi, spesifikasyonlarda yazıldığı gibi elde edin: http://api.jquery.com/map/
$(':checkbox').map(function() {
return this.id;
}).get().join();
Cevap #3
.map() fonksiyonunuzun sonuna .toArray() eklemeniz gerekiyor
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = $("#find-table input:checkbox:checked").map(function(){
return $(this).val();
}).toArray();
console.log(searchIDs);
});
Demo: http://jsfiddle.net/sZQtL/
Cevap #4
var ids = [];
$('input[id="find-table"]:checked').each(function() {
ids.push(this.value);
});
Bu benim için işe yaradı!
Cevap #5
Kodunuzu biraz refaktör ettim ve aradığınız çözüme ulaştığıma inanıyorum. Temelde, searchIDs'yi .map() sonucuna atamak yerine, değerleri bir diziye ekledim.
$("#merge_button").click(function(event){
event.preventDefault();
var searchIDs = [];
$("#find-table input:checkbox:checked").map(function(){
searchIDs.push($(this).val());
});
console.log(searchIDs);
});
Kodu çalıştıran bir fiddle oluşturdum.
