jQuery隐藏div / <a> onClick question</a>

时间:2010-02-22 23:02:10

标签: jquery onclick

我提前为问题的措辞道歉......

我有一个在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>

2 个答案:

答案 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;应该使页面不会出现在顶部。