在页面的某些部分加载后,jQuery draggable不起作用

时间:2017-06-30 21:14:18

标签: javascript jquery html jquery-ui draggable

我正在构建此页面: http://codediaries.club/team.php?id=126

我对jQuery draggable函数有一个特定的问题。

正如您所看到的,我已经为某些元素使用了jQuery和bootstrap。我的问题是,在窗口加载后,我尝试运行一个jQuery代码,使第三个选项卡中的一些div元素("形成")在某个区域内可拖动。这是我的代码:

<script>
$(window).load(function() {

           $(".ui-draggable").each(function(i, obj) {
                var self = this;
                var stringID = self.id.replace("man", "");
                var formationID = self.id.replace("formation", "map");
                formationID = formationID.replace("man", "formation");
                formationID = formationID.substring(0, 14);
                var coordXString = "coordX"+stringID;
                var coordYString = "coordY"+stringID;
                var positionRoleString = "positionRole"+stringID;
                this.start_x = $("[name='"+coordXString+"']").val();
                this.start_y = $("[name='"+coordYString+"']").val();
                this.start_role = $("[name='"+positionRoleString+"']").val();

                obj.draggable({
                    containment: "."+formationID,
                }).css("position", "absolute");

            });

        });

控制台在行中显示错误&#34; obj.draggable&#34;,说&#34; draggable不是函数&#34;。

但是,我已经测试了如果我将这行代码放在文档的开头,

$( function() {
          $(".draggable").draggable();
  } );

它没有显示这个错误,所以我想,有些东西会在特定时间后加载,并且会破坏jQuery函数。

感谢任何观看并希望提前帮助的人。

1 个答案:

答案 0 :(得分:1)

看起来循环中的值(obj)是一个HTML元素而不是jQuery元素,并且必须在jQuery元素上调用draggable。尝试使用jQuery包装器围绕obj

所以改变这个:

obj.draggable({
  containment: "."+formationID,
}).css("position", "absolute");

要:

$(obj).draggable({
  containment: "."+formationID,
}).css("position", "absolute");