我需要使用数据链路(jQuery插件)中的setField()方法设置单选按钮。在数据链路中使用setField设置单选按钮(jQuery)
我已经阅读了关于gitHub的这个问题,并看到了一个解决它的问题(https://github.com/jamiemthomas/jquery-datalink),但这是针对jQuery的老版本。
什么是使用数据链接插件的setField方法更新单选按钮的简单方法,可能稍作修改?也许还有其他选择/插件?
我需要使用数据链路(jQuery插件)中的setField()方法设置单选按钮。在数据链路中使用setField设置单选按钮(jQuery)
我已经阅读了关于gitHub的这个问题,并看到了一个解决它的问题(https://github.com/jamiemthomas/jquery-datalink),但这是针对jQuery的老版本。
什么是使用数据链接插件的setField方法更新单选按钮的简单方法,可能稍作修改?也许还有其他选择/插件?
感谢来自登录此问题的评论(https://github.com/jquery/jquery-datalink/issues/14#issuecomment-531732),我已经修改了在那里找到的黑客。通过更改setField方法如下,它的工作原理:
(编辑 - 添加代码设置复选框以及)。
前:
if (target.nodeType) {
var setter = fnSetters[ field ] || "attr";
$(target)[setter](value);
后:
if (target.nodeType) {
var setter = fnSetters[ field ] || "attr";
/* Hack to set radio buttons */
if ($(target).is(':radio')) {
$(target).parent().children(":radio[value='" + value + "']").attr('checked', true);
} else if ($(target).is(':checkbox')) {
if (target.value == value) $(target).attr('checked', true);
} else {
$(target)[setter](value);
}
编辑 - 我还分叉在GitHub上原有的数据链项目,并添加了这些变化:https://github.com/mydoghasworms/jquery-datalink/
更新mydoghasworm与下面的代码通过以下两个代码片段修正了他所面临的“无法取消选中”的问题。
if (m) {
var name = m.name,
value = m.value,
convert = m.convert;
if (ev.target.attributes['type'].nodeValue === "checkbox") {
value = ev.target.checked;
}
if (convert) {
value = convert(value, ev.target, target);
}
if (value !== undefined) {
$.setField(target, name, value);
}
而且
} else if ($(target).is(':checkbox')) {
//value is whether or not checkbox is clicked
if (value)
$(target).attr('checked', true);
else
$(target).removeAttr('checked');
第一段代码在哪里? – GalacticCowboy 2011-09-20 13:06:02
你有,显示此功能工作的任何demoes?我自己尝试,没有任何运气。我已经将调试器行添加到setField函数中,并且它们没有被击中。 – bobber205 2011-06-28 00:21:06