簡體   English   中英

jQuery根據單擊按鈕的次數更改元素

[英]jQuery changing elements depending on how many times the button has been clicked

我不知道如果我只是不知道如何使用.toggle()或者如果我只是寫了.click()當我點擊一個按鈕取決於功能失常,但基本上我想要兩個不同的事情發生,是否打開。

基本上,如果單擊該按鈕,則希望顯示隱藏的div,並且希望更改按鈕的文本。 然后,當再次單擊它時,div將再次隱藏,文本將恢復為之前的狀態

 $(document).ready( function() { var count = 0; $("#dropdown-toggle-button").click(function() { count++; if (count % 2 !== 0) { // on odd clicks do this $('#dropdown-column').css('display', 'block'); $('#dropdown-toggle-button').text('Toggled Button'); } else if (count % 2 === 0) { // on even clicks do this $('#dropdown-column').css('display', 'none'); $('#dropdown-toggle-button').text('Un-toggled Button'); }; }); }); 
 #dropdown-column { display: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <h2 id="sample-header">Header</h2> <a href="#" id="dropdown-toggle-button">Un-toggled Button</a> <div id="dropdown-column"> <p>Hello, Stranger</p> </div> 

您唯一的問題實際上是語法錯誤!

首先,您忘記添加額外的}); 關閉外部document.ready功能。

接下來,如果沒有,則使用分號。 這告訴javascript,它正在開始讀取另一條語句,而不是繼續從之前讀取if語句,這意味着“ else”不知道將自身連接到什么。

如果您想進一步完善代碼,則else后面的if語句是多余的,如果只有2個狀態,則可以

if(statement passes as true){
    // do stuff
}
else { 
    // your code here 
}

看起來在您的JavaScript中,括號/彎括號匹配有點偏離。 嘗試這個:

$(document).ready( function() {
  var count = 0;
  $("#dropdown-toggle-button").click(function() {
    count++;

    if (count % 2 !== 0) {
      $('#dropdown-column').css('display', 'block');
      $('#dropdown-toggle-button').text('Toggled Button');
    }
    else {
      $('#dropdown-column').css('display', 'none');
      $('#dropdown-toggle-button').text('Un-toggled Button');
    }
  });
});

根據jQuery文檔,( http://api.jquery.com/toggle/

沒有參數,.toggle()方法僅切換元素的可見性:

$( ".target" ).toggle();

通過更改CSS顯示屬性,匹配的元素將立即顯示或隱藏,而不會產生動畫。 如果最初顯示該元素,則它將被隱藏; 如果隱藏,它將顯示。 display屬性將根據需要保存和恢復。 如果一個元素的顯示值為inline,則將其隱藏並顯示,它將再次以inline顯示。

因此,盡管您編寫的代碼應該可以正常工作,但這並不是一個很干凈的解決方案。 我建議使用jquery內置的.toggle函數。

$(document).ready( function() {

    $("#dropdown-toggle-button").click(function() {

        // first toggle the display of the column element
        $('#dropdown-column').toggle();

        // then check for its display status
        // http://api.jquery.com/visible-selector/
        if ($('#dropdown-column').is(':visible')) {
            // display: block
            $('#dropdown-toggle-button').text('Toggled Button');

        } else {
            // display: none
            $('#dropdown-toggle-button').text('Un-toggled Button');
        }



    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM