序列化没有表格?

时间:2010-03-03 12:11:44

标签: jquery serialization object

大家好,我正在使用html对象而不是表单在html页面上打开对象(添加类.active)和off。并且在每次点击时我都希望它创建一个带有类.active的项目数组,但我似乎无法获得任何结果?!

这是正确的方向吗?

var data = $('li.tagToggle.active').serializeArray();
// li id format is 'id_0001' 
alert(data)
$.post("/scripts/php/process.php",{ 
         'data[]': data,
         funcName : 'tagResults',
         tagResults : '1'
}) 

保持警报和空窗口但是当我在表单上使用它时,它会抓住所有类的对象.active

欢迎任何指示!

5 个答案:

答案 0 :(得分:13)

您可以序列化元素内的所有输入,如下所示:

var data = $('YourId :input').serialize()

答案 1 :(得分:10)

这就是我正在使用的

(function($){
$.fn.serializeAny = function() {
    var ret = [];
    $.each( $(this).find(':input'), function() {
        ret.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( $(this).val() ) );
    });

    return ret.join("&").replace(/%20/g, "+");
}
})(jQuery);

在你的情况下使用它 的 $( 'li.tagToggle.active')serializeAny();

答案 2 :(得分:6)

好的 - 让它工作但它不像serialize()

那样整洁
function getTags(){

    var data = [];

    $('li.tagToggle.active').each(function(){
        var me = $(this);
        var id = me.attr("id").split('_');
        data.push(id[1])

    });

    $.post("/scripts/php/process.php",{ 
         'data': data,
         funcName : 'tagResults',
         tagResults : '1'
    }) 

}

认为有更好的方法吗?

答案 3 :(得分:6)

使用此功能,您可以将任何元素集串行化:

function makeSerializable(elem) {
  return $(elem).prop('elements', $('*', elem).andSelf().get());
}

然后你可以像这样使用它:

var arr = makeSerializable('li.tagToggle.active').serializeArray();

var $elem = $('li.tagToggle.active');
var data = makeSerializable($elem).serialize();

答案 4 :(得分:2)

万一有人偶然发现这个问题,这个链接是同一个问题,解决方法是使用jquery序列化

    $('#divId :input').serialize();

所以在这种情况下

    $('li.tagToggle.active :input').serialize();

链接到问题jQuery to serialize only elements within a div