构建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
选择器中有一个内置的解决方法,所以它从来都不是一个问题。
Interesting Posts