0
我有一个DragAndDrop类型事件发生两个函数。当jqGrid的被初始化:为什么这个字符串被转换为JQuery?
function gridInitialized() {
var grid = $(this);
var gridId = grid[0].id;
var droppableArea = [];
//Code to populate droppableArea successfully
for(var i = 0, len = $(droppableArea).length; i < len; i++) {
//THIS IS THE LINE IN QUESTION
$(droppableArea)[i].attr("ondrop", "return handleDropHtml5(event, " + gridId + ")");
//END OF LINE IN QUESTION
}
}
,然后函数来处理降:
function handleDropHtml5(event, gridId) {
//Code to handle the drop
}
我注意到,我没有把引号gridId
当我宣布属性"ondrop"
但思想它可能工作,因为整个部分是一个字符串,gridId也是一个字符串。但是,当它到达handleDropHtml5
时,gridId将作为与gridId
同名的JQuery表来发布。我不需要正确传递gridId
的解决方案,我已经有了。我很好奇为什么这种转换正在发生。什么导致JQuery表出现?
你为什么要使用ATTR分配事件处理程序?这是不好的做法。使用'.on()' – epascarello
@epascarello'attr'被别人的代码遗留下来,我只需要添加网格就可以改变我们现在做事情的方式,而且不想改变太多。 –
[Most?]浏览器将为每个元素的ID自动创建一个全局变量!这就是这里发生的事情。 –