Переместить div, созданный с помощью Jquery

#jquery #dom #html

#jquery #dom #HTML

Вопрос:

Чего я действительно хочу, так это иметь возможность щелкнуть по вновь созданному div, затем щелкнуть где-нибудь еще на экране и переместить div туда.

Мой код:

 $(function() { 
   $('a#linkA').click(function() {
      $('#container')
      .prepend("<div id='cloneA' onclick='moveA();'> <img src='A.gif' alt='A' </div>")
   });
});

function moveA(event) {
    var posx = event.pageX;  //get the mouse's x coord 
    var posy = event.pageY; //get the mouse's y coord   
    document.getElementById("cloneA").style.left = posx;
    document.getElementById("cloneA").style.top = posy;
  

Когда я запускаю это в firefox и использую firebug, он говорит «document.getElementById(«CloneA»).style.значение left не определено…Почему это так и что я могу сделать, чтобы заставить это делать то, что я хочу?
Спасибо!

Комментарии:

1. попробуйте добавить position: absolute; для ‘CloneA’ также добавьте ‘px’

2. По какой-либо причине вы не используете $('#cloneA').click() для добавления moveA() функции?

Ответ №1:

У вас есть несколько разных проблем. Во-первых, вы не передаете событие moveA(event) кому-либо другому. Кроме того, когда вы устанавливаете left и top , вам нужно добавить тип измерения к заданному вами значению left и top ( px , % ) . И, чтобы установить left и top , вам нужно a position: absolute или a position: relative для #moveA перемещения в эту позицию.

Кроме того, если вы собираетесь добавить несколько #moveA img , вам действительно следует добавить уникальный номер к ID атрибуту этого элемента.

 $(function() {
   var $container = $('#container');
   $container.data('count', 0);
   $('a#linkA').click(function() {
      var img = 'http://www.gravatar.com/avatar/e1122386990776c6c39a08e9f5fe5648?s=64amp;';
      var id = "cloneA" $container.data('count');
      $container.prepend("<div id='" id "'><img src='" img "' alt='A'/></div>");
      $container.data('count',$container.data('count') 1);
      $('#' id).click(function(event){
          moveA(event);
      });
   });
});

function moveA(event) {
    var posx = event.pageX;  //get the mouse's x coord
    var posy = event.pageY; //get the mouse's y coord
    var div = event.currentTarget.id;
    document.getElementById(div).style.position = 'relative';
    document.getElementById(div).style.left = posx 'px';
    document.getElementById(div).style.top = posy 'px';
}
  

http://jsfiddle.net/WkkCE/

Комментарии:

1. Смотрите мое последнее редактирование, которое я только что добавил. Кроме того, пожалуйста, проголосуйте и отметьте как ответ, если вы чувствуете, что он отвечает на вопрос. :)

2. Ваше редактирование также очень полезно: D Я бы проголосовал, но, видимо, у вас должна быть «репутация 15».

3. Это верно; Я всегда забываю об этом. Не беспокойтесь, я ценю, что вы пытаетесь. :)