我试图将DOM元素传递给函数而没有任何运气。 FireBug报告以下问题:
SyntaxError: missing ] after element list
LlenarDetalleReserva([object HTMLInputElement]); return false;
选择器需要在创建时动态添加一些属性。
我尝试过以下方法:
$('#mySelector').attr({'onkeydown' : 'intOrFloat(event,this.value);', 'onchange' : 'LlenarDetalleReserva('+ $.trim($('#cant_r_'+ vectorid[2])[0]) +'); return false;'});
我在这里缺少什么?产生这个错误的原因是什么?
提前致谢。
答案 0 :(得分:0)
请不要那样做。使用on()
将事件绑定到元素。切勿直接将其设置为属性。
$('#mySelector')
.on('keydown', function(event)
{
intOrFloat(event, this.value);
})
.on('change', function(event)
{
if (vectorid && vectorid[2] != undefined)
{
var element = $('#cant_r_'+ vectorid[2]);
if (element.length > 0)
{
LlenarDetalleReserva(element);
}
}
return false;
});
上面的代码(充满if
s)是为了避免在运行时出现异常。这就是我在你的情况下会做的。此外,我真的不知道你在$.trim()
函数中想要得到什么,但似乎你想要获取元素并将其作为字符串传递。在上面的代码中,它通过引用传递,而不是。
<强>更新强>
为了回答OP的问题为什么我不应该直接设置属性我没有告诉你,你不能直接添加属性,而是event handler属性。我不知道在引擎的背景中会发生什么,所以事实上,它可以添加作为属性。但这不是最佳做法,而是Unobtrusive方法的一部分。