我正在尝试从jquery中的html输入中查找数据属性。运用
以下代码中的$(this).attr("data-jsonid");
:
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function ()
{
if(!isNaN(this.name))
{
var currentId = $(this).attr("data-jsonid");
if (currentId !== undefined)
{
alert(currentId);
}
if (o[this.name] !== undefined)
{
if (!o[this.name].push)
{
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
}
else
{
o[this.name] = this.value || '';
}
}
});
return o;
};
$(function () {
$('form').submit(function () {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
我可以在我的html源代码中看到我的所有文本输入都有一个data-jsonid属性,但是我无法确定它在javascript / jquery中的含义。我只能在调试时找到名称和值。
我已经创建了一个jsfiddle项目来帮助解释这个问题http://jsfiddle.net/mvargos/dSz38/。如果单击“提交查询”,则会打印页面的json。我的最终目标是我希望能够读取data-jsonid属性,以便我可以格式化我的json保存方式(如果此属性存在)。 目前,json保存为
`{"1028":["Matt","Varg","27","2","Cris","Vargz","23","A"]}`
但是一旦我可以确定data-jsonid,我想创建类似于json的json:
`"1028":[{"id":"1", "tenantInfo":["Matt","Varg","27","2"]},{"id":"2", "tenantInfo":["Cris","Vargz","23","A"]}]`
我不确定我是在做错误的语法还是做出其他错误。感谢您的帮助,如果这个解释很差,请告诉我。
答案 0 :(得分:2)
var a = this.serializeArray();
上面的行序列化对象..
所以基本上你是在迭代而不是jquery对象的array members
$.each(a, function ()
$(this)在此上下文中不是合适的选择器。
答案 1 :(得分:2)
在序列化之前,您可以“记住”jQuery版本的this
:
$.fn.serializeObject = function() {
var $this = $(this);
...
然后,当你想将它用作jQuery对象时,可以使用$ this。
$this.data('some-data-attr');
答案 2 :(得分:1)
this
不是输入元素,它只是一个普通的对象。您必须导航回输入才能获取该信息:
$("[name=" + this.name + "]").data("jsonid");