2013-01-31 38 views
0

我試圖編寫一個函數,顯示基於div的當前類的2個可能的工具提示中的1個,但我似乎無法使它工作。jQuery if if statment for class dynamic add

兩個類都不斷顯示...

香港專業教育學院做了一個小提琴來解釋我的問題,因爲代碼是相當龐大的......

http://jsfiddle.net/QfrGc/

$('.row').hover(function(){ 
    if(!$(this).hasClass('active')) { 

      $(this).hover(function(){ 

       //Click to expand 
       tip = $('.t1'); 
       tip.show(); 

      }); 


    } else { 

     $(this).hover(function(){ 

       //Click to drag 
       tip = $('.t2'); 
       tip.show(); 

      }); 

    }; 
}); 
+1

不太清楚我得到的問題 - 我看到了紅色的提示開始,如果我點擊一個div使它「活動」我然後看到一個綠色的工具提示。你永遠不要在工具提示中調用hide(),所以它們永遠不會消失。這是問題嗎? – codemonkey

回答

0

你並不需要附加一個新的懸停事件。我已修改了代碼:

$('.row').hover(function(){ 
    if(!$(this).hasClass('active')) { 
     //Click to expand 
     tip = $('.t1'); 
     tip.show(); 
    } else { 
     //Click to drag 
     tip = $('.t2'); 
     tip.show(); 
    }; 
}); 
1

如果一個類存在你將第二hover事件。這會發生一次 - 並非每次按照您的預期進行徘徊。

只是做了檢查,做的第一懸停內的正確行爲

$('.row').hover(function(){ 
    var tipSelector = $(this).hasClass('active') ? '.t1' : '.t2'; 
    $(tipSelector).show(); 
}); 

活生生的例子:http://jsfiddle.net/QfrGc/1/

您也可能要隱藏工具提示,當你的鼠標了。如果是的話這個可以擴展到

$('.row').hover(function(){ 
    var tipSelector = $(this).hasClass('active') ? '.t1' : '.t2'; 
    $(tipSelector).show(); 
},function(){ 
    var tipSelector = $(this).hasClass('active') ? '.t1' : '.t2'; 
    $(tipSelector).hide(); 
}); 

活生生的例子:http://jsfiddle.net/QfrGc/2/