javascript
2015-07-03 92 views 2 likes 
2

我有一个手风琴式的菜单,该菜单上悬停工作正常状态,但我想改变对点击,而不是...JavaScript鼠标/点击的麻烦

<script type="text/javascript"> 

$(document).ready(function(){ 
    $('#nav > li').hover(
     function() { 
      if ($('> span',this).attr('class') != 'active') { 
       $('#nav li ul').slideUp(); 
       $('span',this).next().slideToggle(); 
       $('#nav li span').removeClass('active'); 
       $('> span',this).addClass('active'); 
      } 
     }, 
     function() { 
      $('#nav li ul').slideUp(); 
      $('#nav li a').removeClass('active'); 
     }); 
    }); 
</script> 

但仅仅更换悬停点击不起作用,任何意见大加赞赏我是个设计师,所以我的JS是相当差:)

+1

,因为悬停需要一个 '上' 悬停和 '关' 悬停通话2个功能返回,将其改为点击不会工作,您需要将代码形成“关闭”回调回到“if”语句的“else”部分 – atmd

+0

you m ight也可以使用'onmousedown'和'onmouseup'事件 – Burki

+0

请发布一个HTML示例,因为不可能从脚本中判断哪些元素是什么。最好作为JS小提琴! https://jsfiddle.net/ – beercohol

回答

0

.hover(fucntion() {}, function()); // .hover() accept two function .click(function() {}); // only accept one

尝试

$('selector').on('click', function() { 
    if($(this).hasClass('active')) { 
     // do something if this has class active 
    } 
    else { 
     // do something if not. 
    } 

}); 
1

试试这个,

<script type="text/javascript"> 
$(document).ready(function() { 
     $('#nav > li').click(function() { 
      if ($('> span', this).attr('class') != 'active') { 
       $('#nav li ul').slideUp(); 
       $('span', this).next().slideToggle(); 
       $('#nav li span').removeClass('active'); 
       $('> span', this).addClass('active'); 
      } 
     }).mouseout(function (e) { 
      if ($(e.target).parents().find('#' + $(this).attr('id')).length) return; 
      $('#nav li ul').slideUp(); 
      $('#nav li span').removeClass('active'); 
     }); 
    }); 

</script> 

HTML:

<li id="t1"><span>Nav item click me 1</span> 
       <ul> 
        <li><a href="#">Sub link 1</a></li> 
        <li><a href="#">Sub link 2</a></li> 
        <li><a href="#">Sub link 3</a></li> 
        <li><a href="#">Sub link 4</a></li> 
       </ul> 
      </li> 
      <li id="t2"><span>Nav item click me 2</span> 
       <ul> 
        <li><a href="#">Sub link 1</a></li> 
        <li><a href="#">Sub link 2</a></li> 
        <li><a href="#">Sub link 3</a></li> 
        <li><a href="#">Sub link 4</a></li> 
       </ul> 
      </li> 
当然
+0

图例,它的工作....谢谢约翰! :) http://jsfiddle.net/dukeofazard69/scgwugjz/6/ AH,实际上有些粘性。点击'导航项目点击我1'(在上面的链接),滚动它,然后尝试再次点击它,不想玩球。有任何想法吗? –

+0

@keirananderson,在mouseout中,我们需要将#nav li a替换为#nav li span。回答更新 – 2015-07-03 16:43:30

+0

啊,只要我关闭主导航项目它的cloes,所以你不能去的子链接 –

相关问题