2012-07-17 43 views
1

我有一個小問題,jquery和依靠你的幫助。 我有一個自定義的可排序選項卡,但是,當我單擊所選項目時,必須單擊兩次以更改順序。jquery需要點擊兩次選定的選項卡

這裏有腳本的演示:http://jsfiddle.net/7e3UV/1/

嘗試點擊。主動類按鈕,在第一個鏈接,例如,你會看到,它需要點擊第二次改變它的方向......

所以,任何人都可以幫助我,理解爲什麼這樣做呢?

HTML:

<div id="sort"> 
    <a href="#" data-sort="views" data-order="desc" class="active">views <span>&darr;</span></a> 
    <a href="#" data-sort="rating" data-order="desc">rating <span>&darr;</span></a> 
    <a href="#" data-sort="date" data-order="desc">date <span>&darr;</span></a>       
</div><!-- #sort --> 

JS:

var body = $('body'); 

body.on('click', 'div#sort > a', function(e){ 

    var self = $(this); 

    // if clicked on active tab 
    if(self.hasClass('active')) 
    { 
     console.log('active'); 

     if(self.data('order') === 'asc') 
     {      
      console.log('active asc'); 
      self.data('order', 'desc'); 
      self.children('span').html('&uarr;'); 
     } 
     else 
     { 
      console.log('active desc');  
      self.data('order', 'asc'); 
      self.children('span').html('&darr;'); 
     } 

    } 

    // add and remove .active class 
    self.addClass('active').siblings().removeClass('active'); 

    e.preventDefault(); 
}); 
+0

如果您能夠在jsFiddle上提供自包含的代碼示例,則還應在此處提供一個。總是想象你的問題可以根據你的問題單獨解決,而無需外部資源。我已經提前將它們複製在這裏爲你。 ;-) – 2012-07-17 17:15:59

+0

謝謝,爲此,我會考慮這一點。 – 2012-07-17 17:21:29

回答

0

第一次單擊,使鏈路活動。 只要鏈接處於活動狀態,每增加一次點擊都會改變排序方向。

這就是您必須點擊兩次的原因。 首先點擊激活,第二個改變排序順序。

+0

但爲了讓箭頭改變,實際上你必須點擊一個以前不活動的鏈接3次。首先要將其設置爲活動狀態,其次要更改順序但不正確地設置箭頭,第三要更改順序和箭頭。 – MrOBrian 2012-07-17 17:33:51

+0

是的,但那只是因爲(你已經說過了)他html中的初始箭頭是錯誤的。但腳本的功能正如我所說的,他的問題是要解釋他,爲什麼他必須點擊兩次來改變方向。 – 2012-07-17 17:42:57

4

您需要更換您的&darr;&uarr;。你有一個向下的箭頭在html中下降,但是在代碼中有一個向下的箭頭以上升,向下的箭頭是下降的。

+0

剛做出同樣的發現。合法的。 – kornfridge 2012-07-17 17:20:20

相關問題