2012-10-30 106 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; 

    }); 
});​