2010-02-22 22 views
1

我提前了問題的措辭道歉......jQuery的隱藏DIV/<a>的onClick問題

我有被一個AJAX調用後返回的表。每行最後的<td>是一個隱藏的div,我已經連線到mouseOver上顯示,然後再次隱藏在<td>中可見的<a>鏈接的mouseOut上。我試圖完成的是,如果有人真的點擊了鏈接,那麼框將保持放置狀態,直到用戶再次點擊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'); 
        }); 
        }); 

      }); 

     } 

我覺得我在正確的方向,但是點擊鏈接彈出頁面頂端,我知道有需要在那裏被丟棄一回假做在某個地方,但該div不會停留。我在考慮div可能會停留,但當我離開點擊<a>時,mouseOut函數正在發射。

與往常一樣,我感謝任何和所有的幫助提前stackoverflow輝煌的成員!

這裏的錶行,以防萬一它有助於在所有的標記:

<tr><td>102.89</td><td>12/14/2009</td><td>GA00427424  </td><td>ACHCBLUE CROSS B</td><td>061000104</td><td><a href="#">View Matches</a><div class="hideMe" style="display: none;"><span>ELECBCBS 121509 1366, $103.0000</span><br><span>CPO 121709 1383, $103.0000</span><br><span>C121809MJM2 LB 9060, $103.0000</span><br><span>C122809MM10 LR 9110, $103.0000</span><br></div></td></tr> 
+0

問題的任何地方都沒有問號。你的問題是什麼? – hobodave 2010-02-22 23:05:16

+0

問題似乎對我很清楚。我認爲Obalix回答了它。 – user113716 2010-02-22 23:10:52

回答

1

您應該有一個全局變量,指示是否應該顯示aonmouseout只能隱藏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;應該保持頁面不會頂層。

2

我認爲你將不得不返回從點擊功能,防止導航「假」。

+0

+1如果您想允許事件冒泡繼續,請使用'event.preventDefault()'。 – user113716 2010-02-22 23:11:47