我用Flask服务器端编写了一个网站,该网站监视在我运行的其他构建机器上构建的数据。在监视页面上,我可以查看每秒钟更新的特定计算机的当前状态。我希望能够将鼠标悬停在某些计算机的名称上,然后会弹出一个工具提示,显示正在构建的当前数据。我目前具有内置的功能,可以将数据服务器端存储在数据库中并轮询数据库。但是到目前为止,它返回所有数据状态。我对此表示满意,但是我无法区分它位于哪个元素上,因此无法显示正确的数据。在我的mouseover函数中,我有一个ajax调用,在成功函数中,我有当前DOM元素的信息。

$('.target').mouseover(function() {
  $.getJSON('/_get_platform', {
    statusID: {{ statusID }}
            }, function(data) {
    var $this=$(this);
    var $tip=$($this.attr('data-tooltip'));
  }); //end getjson
}); //end mouseover


我想将$ tip与(例如)id #debugTip进行比较。因此,如果我知道鼠标位于ID为debugTip的元素上,那么我可以显示与此元素关联的适当数据。

(为简洁起见,我删除了所有多余的代码,例如工具提示等)

谁能告诉我如何将其与我所知道的相提并论?我试过使用$ tip =='#debugTip'和$ tip.is('#debugTip'),但是那没有用或者我没有正确使用它。有人知道我的错误吗?

提前致谢!!

最佳答案

在执行ajax请求之前,您只能访问this。因此,在进入该ajax回调之前,您必须存储提示。

$('.target').on( 'mouseover', function() {

  // get the tip, while we still have 'this' object (before the ajax)
  var $tip = $($(this).data('tooltip'));

  $.getJSON('/_get_platform', {
    statusID: {{ statusID }}
  }, function(data) {

    // check if it's a debug tooltip
    if ( $tip.is('#debugTip') ) {
      console.log("it's the debug tip");
    } else {
      console.log("normal tooltip");
    }

  }); //end getjson
}); //end mouseover


希望这可以帮助。

关于javascript - 比较$ this选择器和JQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32214377/

10-10 17:52