2012-07-17 45 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

相关问题