使用jquery,
以下行有效,即调用radioClicks函数。
$("input:[name='"+54464+"']").bind( "click", radioClicks );
但这个没有:
$("input:[name='"+options.rowId+"']").bind( "click", radioClicks );
是的,你已经猜到了,options.rowId = 54464(至少在调试器中)。
我缺少什么?
由于
编辑:
我删除了:正如一些建议的那样,我使用了alert(options.rowId),它按预期显示了54464。此外,它不用于循环中。代码是:
function radioFormatter (cellvalue, options, rowObject)
{
$("input[name='"+options.rowId+"']").bind( "click", radioClicks );
if("checked" == cellvalue)
return "<input type='radio' name='"+ name +"' id='"
+ options.colModel.name + "' value='" + options.rowId
+ "' checked>";
return "<input type='radio' name='" + name + "' id='" +options.colModel.name
+"' value='" + options.rowId + "'>";
}
它与jqgrid一起使用,其中我有一个包含多个列的行,其中包含一个单选按钮。
我已经尝试了一切我无法想到的事情......
由于
答案 0 :(得分:1)
我不确定为什么第一个实际上有效,但:
在那里是额外的,它应该就是这样:
$("input[name='"+options.rowId+"']").bind( "click", radioClicks );
:
通常位于伪类或filters之前,但attribute-equals selector不需要它。
编辑:至于差异,您当时确定options.rowId == 54464
吗?在该行之前粘贴console.log(options.rowId)
,看看Chrome或Firebug中的结果是什么。
答案 1 :(得分:1)
我认为选择器是正确的。但是如果没有完整的代码,很难说出根本原因。
我的猜测是代码使用循环将事件侦听器附加到一组单选按钮,并且作者遇到臭名昭着的循环闭包问题。 options.rowId
始终引用循环中的最后一个值。
无论如何,需要更多细节。
答案 2 :(得分:0)
我的猜测是options.rowId返回一个int 但是$(“input [name ='”+ options.rowId +“']”)需要一个字符串
试
var idname = options.rowId;
$("input:[name='"+idname+"']").bind( "click", radioClicks );
或使用firebug或chrome js debug来查找更多
答案 3 :(得分:0)
除了冒号错误之外,这段代码还可以。我认为你的调试器愚弄你。
您必须小心调试语句中的引用。如果您只是执行console.log(options),则调试器中的值可能会更改为options.rowId
。尝试在绑定调用之前执行警报(options.rowId)。
alert("input[name='"+options.rowId+"']");
$("input[name='"+options.rowId+"']").bind( "click", radioClicks );
答案 4 :(得分:0)
围绕[attribute =] param引用并不是绝对必要的,所以
$("input[name=" + options.rowId + "]").bind( "click", radioClicks )
答案 5 :(得分:0)
我发现了问题,但不知道如何修复它:
这不起作用:
var options = {rowId:1223};
$("input:[name="+options.rowId]+"]").bind( "click", function(){
alert('clickedz');
});
但这样做:
var options 1223;
$("input:[name="+options]+"]").bind( "click", function(){
alert('clickedz');
});
我不是js专家,但问题似乎是如何创建选项对象。
答案 6 :(得分:-1)
看起来你有双引号 试试这个:
$("input:[name="+options.rowId+"]").bind( "click", radioClicks );
似乎工作正常。 http://jsfiddle.net/EG2Yx/。检查您的其他代码?