我需要序列化匹配的集合,以便将其值传递给我的rails应用程序。
匹配的集合代码是(返回每个未初始化的select元素的父div):
jQuery('select').filter(function(index){
return jQuery(this).val() == 0;}).closest('div')
序列化我真的只需要每个匹配元素的id,所以我尝试了:
jQuery('select').filter(function(index){
return jQuery(this).val() == 0;}).closest('div').attr('id')
不幸attr()
仅适用于匹配集中的第一个元素。
由于生成的javascript将通过rails remote_function :with
发送,我相信javascript只能是一个声明。
如何将匹配的集合序列化或串行化?
答案 0 :(得分:2)
为了各种各样,这是使用map
的答案:
result = jQuery('select')
.filter( function(index){
return jQuery(this).val() == 0;
})
.closest('div')
.map( function(){
return this.id;
})
.get() // stop here if you want an array
.join(','); // or here if you want a string
答案 1 :(得分:1)
对于甚至更多品种的缘故,这里涉及的循环次数较少:
var idString = $('select').map(function(){
var select = $(this);
return select.val() == 0 ? select.closest('div').attr('id') : null;
}).get().join(',');
答案 2 :(得分:0)
var result = [];
jQuery('select').filter(function(index){
return jQuery(this).val() == 0;
}).closest('div').each( function() {
result.push(this.id);
});
var resultStr = result.join(',');