v3n*_*3nt 16 jquery serialization object
大家好,我正在使用html对象而不是表单在html页面上"打开(添加类.active)和关闭"对象.并且在每次点击时我都希望它用类.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'
})
Run Code Online (Sandbox Code Playgroud)
保持警报和空窗口,但当我在表单上使用它时,它会抓取类.active的所有对象
任何指针欢迎!
小智 15
您可以序列化元素内的所有输入,如下所示:
var data = $('YourId :input').serialize()
Run Code Online (Sandbox Code Playgroud)
fed*_*ich 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);
Run Code Online (Sandbox Code Playgroud)
在你的情况下使用 $('li.tagToggle.active').serializeAny();
好的 - 让它工作,但它的不如串行化()
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'
})
}
Run Code Online (Sandbox Code Playgroud)
认为有更好的方法吗?
使用此功能,您可以将任何元素集可序列化:
function makeSerializable(elem) {
return $(elem).prop('elements', $('*', elem).andSelf().get());
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
var arr = makeSerializable('li.tagToggle.active').serializeArray();
Run Code Online (Sandbox Code Playgroud)
要么
var $elem = $('li.tagToggle.active');
var data = makeSerializable($elem).serialize();
Run Code Online (Sandbox Code Playgroud)