我使用slickgrid。一列(第一列)包含链接。现在,当鼠标悬停在链接(jquery中的mouseenter)上时,会显示一个jquery ui对话框,其中包含单击链接时可见的一些数据。这通常会阻止用户点击链接。
因为用户可以动态地向网格添加行,所以我使用on()来绑定事件
$("#grid").on({
mouseenter: function () {
//here I get the correct element but have to store it in global var
myNumber = $(this).text();
$( "#dialog-char" ).dialog("open");
},
mouseleave: function () {
$( "#dialog-char" ).dialog( "close" );
}
},
".char-link"
);
我想将myNumber传递给对话框打开函数:
$( "#dialog-char" ).dialog({
resizable: true,
width: 750,
autoOpen: false,
open: function( event, ui ) {
loadChar(myNumber);
}
});
像这样它可以工作,但我需要全局变量。如何访问open()函数中的链接? event.target
不是链接,它是包含网格的div。其他目标属性都返回undefined。
这有可能吗?
答案 0 :(得分:1)
嗯,看起来并不像是一种直接的方式。如果您想避免使用全局变量,可以使用#dialog-char
方法在打开之前将有关悬停链接的信息绑定到data()
,如下所示:
$("#grid").on({
mouseenter: function () {
$( "#dialog-char" ).data('myNumber',$(this).text());
$( "#dialog-char" ).dialog("open");
},
mouseleave: function () {
$( "#dialog-char" ).dialog( "close" );
}
},
".char-link"
);
$( "#dialog-char" ).dialog({
resizable: true,
width: 750,
autoOpen: false,
open: function( event, ui ) {
myNumber= $(this).data('myNumber');
}
});