jQuery resizable document.getElementFromPoint FF返回错误的值

时间:2018-04-17 08:47:50

标签: jquery

首先要做的事情:几年前我问过这个问题,但现在发现它不适用于FF: - (

Earlier question

我在表格中有一个resizable div,想要查找第一个id的{​​{1}},我将停止调整td

的大小

请参阅下面的代码段和JSFiddle,因为代码段工作不正常。

Chrome中的一切正常。

要获得调整大小的div下面的元素,我使用

div

并获取时间(第一个var elem = document.elementFromPoint(x, y); 的ID)我打电话

td

Chrome会返回正确的var time = $('td:first', $(elem).parents('tr')).attr('id'); (请参阅JSFiddle)

Firefox还返回了id,但始终是我开始调整大小的id的{​​{1}}。

因此,当我从08:00到09:00调整id的大小时,Chrome会返回 32400 ,这是正确的。

Firefox返回 28800 ,这是不正确的!!

(我知道td应始终以字母数字字符开头;-))

谢谢你的帮助!对此,我真的非常感激!

div
id
$("#test").mouseover(function() {
  $(this).resizable({
  	grid:45,
    autoHide: true,
    start: function(event, ui) {
      $(this).data('origHeight', ui.originalSize.height);
    },
    resize: function(event, ui) {
      ui.size.width = ui.originalSize.width;
      $(this).css({
        lineHeight: ui.size.height + 'px',
        zIndex: 8000
      });
    },
    stop: function(event, ui) {
      var y = ($(this).offset().top + ui.size.height);
      var x = $(this).offset().left;
      var elem = document.elementFromPoint(x, y);
      var time = $('td:first', $(elem).parents('tr')).attr('id');
      console.log($(elem));
      console.log(time);
    }
  })
});

1 个答案:

答案 0 :(得分:0)

问题已经解决。

var elem = document.elementFromPoint(Math.round(x), y)

舍入x的值解决了它。不知道为什么但它有效