Как отладить ошибку IE - PullRequest
0 голосов
/ 01 июля 2010

Следующий код работает в Google Chrome и Firefox, но не работает в IE8. Я не знаю почему, это всплывающая подсказка и использует jQuery. Это не мой код. Когда вы запускаете Chrome или Firefox, наведите указатель мыши на элемент, появится подсказка. В IE подсказка отсутствует, похоже, проблема с оператором hover.

Я попробовал пошаговую отладку, но jQuery создает дюжину переменных, что делает отладку практически невозможной.

Вот код

(function ($) {

 $.fn.easyTooltip = function (options) {

  // default configuration properties
  var defaults = {
   xOffset : 10,
   yOffset : 45,
   tooltipId : "tooltip",
   clickRemove : false,
   content : "",
   useElement : "",
   animation : true
  };

  var options = $.extend(defaults, options);
  var content;

  this.each(function () {
     var title = $(this).attr("title");
     $(this).hover(function (e) {
      content = (options.content != "")
        ? options.content
        : title;
      content = (options.useElement != "") ? $("#"
        + options.useElement).html() : content;
      $(this).attr("title", "");
      if (content != "" && content != undefined) {
       $("body").append("<div id='" + options.tooltipId
         + "'>" + content + "</div>");
       $("#" + options.tooltipId).css("position",
         "absolute").css("top",
         (e.pageY - options.yOffset) + "px").css(
         "left", (e.pageX + options.xOffset) + "px")
         .css("display", "none");
       if (options.animation == true) {
        $("#" + options.tooltipId).animate({
           marginTop : "12px",
           opacity : "show"
          }, 400);
       } else {
        $('#' + options.tooltipId).show();
       }

      }
     }, function () {
      $("#" + options.tooltipId).remove();
      $(this).attr("title", title);
     });
     $(this).mousemove(function (e) {
      $("#" + options.tooltipId).css("top",
        (e.pageY - options.yOffset) + "px").css("left",
        (e.pageX + options.xOffset) + "px")
     });
     if (options.clickRemove) {
      $(this).mousedown(function (e) {
         $("#" + options.tooltipId).remove();
         $(this).attr("title", title);
        });
     }
    });

 };

})(jQuery);

Есть идеи узнать, в чем проблема с IE?

1 Ответ

2 голосов
/ 01 июля 2010

Иногда, когда вы создаете какой-либо элемент со значением непрозрачности ... и у него есть дочерний элемент, который также нужно показывать в mouseOver, IE не является дочерним элементом.Это распространенная ошибка, с которой я также сталкивался несколько раз.Что я обычно делаю, так это оставляю непрозрачным нетронутым.тогда это будет работать.

Эта техника помогла мне несколько раз.Попробуйте, поможет ли это вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...