我提前为问题的措辞道歉......
我有一个在AJAX调用后返回的表。在每行的最后一个<td>
中有一个隐藏的div,我已将其连接到mouseOver上,然后再次隐藏在<a>
的{{1}}链接的mouseOut上。我想要完成的是,如果有人实际点击了该链接,那么框将保持不变直到用户再次点击该div。这就是我所拥有的:
<td>
我认为我的方向是正确的,但点击链接会将页面弹到顶部,我知道这与返回false有关,需要在某处丢弃,但div不会停留。我认为div可能会停留但是当我离开点击function showDiv() {
$("#getTable > tbody > tr:gt(0)").each(function(index) {
//grab last td of each row after header row
var row = $(this);
var td = row.find("td:last");
var a = row.find("td:last > a");
$(a).mouseover(function() {
//show div
var d = $(this).next();
d.show('slow');
});
$(a).mouseout(function() {
//show div
var d = $(this).next();
d.hide('normal');
});
$(a).click(function() {
var d = $(this).next();
d.show('slow');
d.click(function() {
$(this).hide('normal');
});
});
});
}
时,mouseOut函数正在触发。
与往常一样,我提前感谢stackoverflow的优秀成员提供任何帮助!!!
这是表格行的标记,以防它有用:
<a>
答案 0 :(得分:2)
我认为您必须从点击功能返回“false”以阻止导航。
答案 1 :(得分:1)
您应该有一个全局变量,指示是否应显示a
。如果不应该显示div,onmouseout
应该只隐藏div:
var show = Array();
function showDiv() {
$("#getTable > tbody > tr:gt(0)").each(function(index) {
show[index] = false;
// your stuff
$(a).mouseout(function() {
//show div
if(!show[index]) {
var d = $(this).next();
d.hide('normal');
}
});
$(a).click(function() {
var d = $(this).next();
if(d.is(':visible')) {
show[index] = false;
d.hide('normal');
}
else {
show[index] = true;
d.show('slow');
}
return false;
});
});
}
请注意,我还更改了click
函数,使您不会每次都分配新的单击处理程序。 return false;
应该使页面不会出现在顶部。