我用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/