.show () не работает на IE - PullRequest
0 голосов
/ 22 января 2012

Я работаю над этим проектом: http://www.arbamedia.com/test/, если вы перейдете к Dyer dhe dritare в левом меню и перетащите один из элементов (дверь или окно) в правую сторону.(рабочий стол) в Chrome и FF показаны 3 опции, которые я добавил для этих элементов, так что это: $("p", this).show(); работает, но в IE9, когда я перетаскиваю элемент, не отображаются опции для перетаскивания, поворота или удаления!Я не знаю, что не так.

Вот где это происходит:

$(".drag").draggable({
  revert      : 'invalid', 
  helper      : 'clone',
  containment : 'desk',
  cursorAt    : { left:-11,top:-1 },

  //When first dragged
  stop        : function(ev, ui) {
    /*========================================================================*/
    var pos = $(ui.helper).offset();
    var left_   = ev.originalEvent.pageX - $("#desk").position().left;
    var top_    = ev.originalEvent.pageY - $("#desk").position().top;
    // get widht and height of the container div#desk element
    var w_ = $("#desk").width();
    var h_ = $("#desk").height();
    objName  = "#clonediv"+counter++;
    objNamex = "clonediv"+counter;
    $(objName).css({"left":left_,"top":top_});

    var gag =  0;
    $(objName).click(function () {
      $("p", this).show();
      $(this).addClass("selektume");
      $('.rotate_handle').unbind('click');
      $('.rotate_handle').click(function(){
        gag += 45;
        $('.selektume').rotate(gag+'deg');
      });
      $('.delete_handle').click(function() {
        $('.selektume').remove();
      });
      return false;
    });

    $(document).click(function () {
      $("p").hide();
      $(".lgutipT").removeClass("selektume");
    });

    //check if dropped inside the conteiner div#des
    if((left_ >= 0) && (left_ <= w_) && (top_ >= 0) && (top_ <= h_))
    {
      $(objName).css({"left":left_,"top":top_});

      // assign a z-index value
      zindex = left_ + top_;
      $(objName).css({"z-index":zindex});
      $(objName).addClass("lgutipT");
      //$(objName).addClass("ui-widget-content");

      $(objName).removeClass("drag");
      $(objName).append('<p><img class="handler"  src="images/move_button.png"><img class="rotate_handle" src="images/rotate_button.png"><img class="delete_handle" src="images/delete_button.png"></p>');
      $("p", this).show();
    }


    /*========================================================================*/

    //When an existiung object is dragged
    $(objName).draggable({
      containment : "#desk",
      handle      : ".handler",
      cursor      : "move"
    });
  }
});

1 Ответ

1 голос
/ 22 января 2012

Очень сложная проблема, так как нет хорошей документации о том, как jQuery UI обрабатывает события на уровне ядра.Решение состояло в том, чтобы открепить и повторно связать событие щелчка.В IE событие click обрабатывается иначе, чем в других браузерах.Решение состояло в том, чтобы просто перепривязать событие click после того, как все сделано (1/1000 секунды задержки).

Мое решение состояло в том, чтобы переместить событие щелчка, добавить привязку при начале перетаскивания и добавить setTimeout() при повторном связывании прослушивателя события $(document).click() после завершения перетаскивания.

ПросмотрИсходный код ниже для просмотра рабочего решения.

http://jsfiddle.net/MattLo/AbF6t/

Скопируйте и вставьте HTML-код в среду разработки.

...