2012-10-30 103 views
0
<div class="search_on" id="search-item"> 
    <span class="text">one</span> 
</div> 
<ul class="search_item" style="display: none;"> 
    <li><a href="#">one</a></li> 
    <li><a href="#">two</a></li> 
    <li><a href="#">three</a></li> 
</ul> 

jQuery代码:我为什么要点击两次触发事件?

$(document).ready(function(){ 

    $('#search-item .text').toggle(function() { 
     $('ul.search_item').show(); 
    }, function() { 
     $('ul.search_item').hide(); 
    }); 

    $('.search_item li a').click(function(){ 
     $('ul.search_item').hide(); 
     $('#search-item .text').text($(this).text()); 
     return false; 
    }); 

}); 

当我点击链接a,预期上述值会变成两个。但是,从改变的价值,我应该点击两次,底部ul列表将显示。为什么?

回答

1

toggle事件方法已过时,你可以使用显示/隐藏toggle代替:

$('#search-item .text').click(function() { 
    $('ul.search_item').toggle(); 
}); 

工作演示http://jsfiddle.net/kH36R/

+1

呦++ 1':)'和** **演示给你:HTTP://的jsfiddle。净/ kH36R /;希望你不会介意我在你的文章中添加一个演示,一个漂亮的勇者! –

+1

@Tats_innit哦,谢谢你兄弟,这对你很好'')' – undefined

1

OR试试这个:http://jsfiddle.net/sM7Tn/

你可以做$('ul.search_item').is(':visible'))是可见的检查和休息将像火箭0一样工作

希望它适合事业B-)

代码

$(document).ready(function() { 
    $('#search-item .text').click(function() { 
     if (!$('ul.search_item').is(':visible')) 
      $('ul.search_item').show(); 
     else 
      $('ul.search_item').hide(); 

    }); 

    $('.search_item li a').click(function() { 
     $('ul.search_item').hide(); 
     $('#search-item .text').text($(this).text()); 
     return false; 

    }); 
});​