jQuery,添加可拖动到追加对象

jQuery, add draggable to append object

本文关键字:追加 对象 拖动 添加 jQuery      更新时间:2023-09-26

我在ajax请求的success处理程序中,例如:

    $.ajax({
        type: "POST",
        url: "{{ path('getevents') }}",
        data: {start: start, end : end},
        success: function (data) {
            for ( var i = 0; i < data['rdv'].length; i++ ) {
                var divRdv = '<div>My div</div>';
                $('myElement').append(divRdv);
                $(divRdv).draggable(); // THIS DOESN'T WORK
            }
        },
        error: function (xhr, status, error) {
          console.log(xhr.responseText);
      }
  });

所以,在一个循环中,我需要创建一个div divRdv,将这个div 附加到myElement,之后,我希望这个div 可拖动。

我该怎么办?

我正在尝试将可拖动添加到每个div,一个接一个,有一种方法可以一次将可拖动添加到多个元素?

这是因为您已经通过附加该代码在 DOM 中添加了该代码。但是由于它不是jQuery对象,它只是作为HTML添加的,并且您的变量只是保存文本,而不是标识dom元素的jquery对象。

因此,当您执行可拖动调用时,您是在全新的jquery(因此,dom)对象上执行此操作,而不是在已添加的对象上。

这样做:

var divRdv = $('<div>My div</div>');
$('myElement').append(divRdv);
divRdv.draggable(); // THIS SHOULD WORK :)

您可以将一个类添加到可拖动的div 中,然后在所有类上调用可拖动的类,如下所示:

$.ajax({
        type: "POST",
        url: "{{ path('getevents') }}",
        data: {start: start, end : end},
        success: function (data) {
            for ( var i = 0; i < data['rdv'].length; i++ ) {
                var divRdv = '<div class="draggable">My div</div>';
                $('myElement').append(divRdv);
            }
            $('.draggable').draggable();
        },
        error: function (xhr, status, error) {
          console.log(xhr.responseText);
      }
  });

类似于 A. Rama 的回答,但带有 jsfiddle: http://jsfiddle.net/4bztfpyf/1/

for ( var i = 0; i < 5; i++ ) {
    var divRdv = $('<div>My div</div>');
    $('body').append(divRdv);
    divRdv.draggable(); // THIS WORKS
}