jQuery匹配set到string

时间:2010-07-18 18:37:36

标签: jquery ruby-on-rails serialization

我需要序列化匹配的集合,以便将其值传递给我的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只能是一个声明。

如何将匹配的集合序列化或串行化?

3 个答案:

答案 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(',');