Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要将此字符串转换为JQuery?_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript 为什么要将此字符串转换为JQuery?

Javascript 为什么要将此字符串转换为JQuery?,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我有两个函数发生在DragAndDrop类型的事件上。初始化jqgrid时: function gridInitialized() { var grid = $( this ); var gridId = grid[0].id; var droppableArea = []; //Code to populate droppableArea successfully for( var i = 0, len = $( droppableArea ).le

我有两个函数发生在DragAndDrop类型的事件上。初始化jqgrid时:

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
    }
}

我注意到,在声明属性
“ondrop”
时,我没有将
gridId
放在引号中,但我认为它可能会起作用,因为整个部分是一个字符串,gridId也是一个字符串。但是,当它到达
handleDropHtml5
时,gridId作为一个JQuery表出现,与
gridId
同名。我不需要正确传递
gridId
的解决方案,我已经有了。我很好奇为什么会发生这种转变。是什么导致JQuery表出现的?

您的代码呈现为

<foo ondrop="return handleDropHtml5( event, theId )">
但是您不应该使用attr来设置事件处理程序。您应该使用适当的方法来附加事件,例如jQuery的
on()


您的代码正在呈现为

<foo ondrop="return handleDropHtml5( event, theId )">
但是您不应该使用attr来设置事件处理程序。您应该使用适当的方法来附加事件,例如jQuery的
on()


为什么要使用attr分配事件处理程序?这是个坏习惯。使用
.on()
@epascarello
attr
是从其他人的代码中遗留下来的,我只需要添加网格来改变我们现在的工作方式,不想改变太多。[大多数?]浏览器会自动为每个元素的ID创建一个全局变量!这就是这里发生的事情。为什么要使用attr来分配事件处理程序?这是个坏习惯。使用
.on()
@epascarello
attr
是从其他人的代码中遗留下来的,我只需要添加网格来改变我们现在的工作方式,不想改变太多。[大多数?]浏览器会自动为每个元素的ID创建一个全局变量!这就是这里发生的事情。
$( droppableArea )[i].attr( "ondrop", "return handleDropHtml5( event, '" + gridId + "' )" );
$( droppableArea ).on( "drop", function (event) { return handleDropHtml5( event, gridId ); } );