构建jquery复选框 – 无法设置选中的值

这看起来很简单,我不知道这是一个错误,还是我做错了什么。

我想要做的是在jquery中构建一个复选框输入,然后返回输入的字符串。 我有这个代码:

var obj = $(''); obj.attr('disabled', 'disabled'); obj.attr('type', 'checkbox'); obj.attr('checked', 'checked'); // this does not work! 

无论我如何渲染这个obj,’checked’属性永远不会被输出。

所以我试过了:

 $('
').append(obj).remove().html();

它返回:

  

我试过设置一个id属性,没什么区别。 我也试过这个,但它不起作用:

 obj.attr('checked', true); 

有关如何获取使用checked属性设置为’checked’(通过jquery)呈现的输入标记的任何建议?

我意识到我可以用字符串连接来做这个,但是现在我真的想知道为什么它不按照应该的方式工作。

编辑

你可以在firebug中尝试这个。 以我的方式或cletus的方式创建obj,然后尝试将其渲染为字符串。 你会发现’checked’属性永远不会被渲染。

你是对的,“checked”属性有一些奇怪之处。 它似乎只有在浏览器实际呈现后才会生效。 (而不仅仅是片段。)

例如,使用您的代码,

 var obj = $(''); obj.attr('disabled', 'disabled'); obj.attr('type', 'checkbox'); obj.attr('checked', 'checked'); var wrapper = $('
').append(obj); alert(wrapper.html()); // notice, no checked attr in this string... $('body').prepend(obj); // but now notice, it IS checked when it's drawn!

我知道这本身并不是一个“答案”,但是想让你知道你不会疯狂。 我很好奇也知道为什么会这样。

祝你好运!

这对我有用:

 $("").attr({ type: "checkbox", disabled: true, checked: true }).appendTo("body"); 

在FF 3.6,Chrome 4和IE 8(compat)中测试过。

我知道的唯一方法是允许你返回整个HTML对象作为字符串将使用outerHTML技巧:

 jQuery.fn.outerHTML = function () { return $('
').append(this.eq(0).clone()).html(); };

然后,简单地说

 $("").attr({ type: "checkbox", disabled: true, checked: true }).outerHTML(); 

会给你完整的字符串。

你试过吗?

 obj.attr('checked'); 

不是想要滑稽。 只是真的想知道它是否为他做了什么。

我想你是对的。 我从来没有考虑过这个因为jQuery在:checked选择器中有一个内置的解决方法,所以它从来都不是一个问题。