簡體   English   中英

當在jquery中添加toggle事件時,為什么我的按鈕消失了?

[英]why does my button disappear when I add the toggle event in jquery?

我想在粗體和普通之間切換文本,因此我為此編寫了代碼,但是當我打開頁面時,粗體按鈕消失了嗎?

    $("#bold").toggle(function() {
    $('.focus').css("font-weight", $(this).val());
    }, function() {
    $('.focus').css("font-weight", "normal");
    });

我的代碼有問題嗎? 請幫助,在此先感謝。

假設您使用的是jQuery 1.9或更高版本,則問題是從庫中刪除.toggle()事件處理方法 因此,您實際上要調用的是隱藏/顯示元素.toggle()函數 (在早期版本的jQuery中,兩個函數都存在,並且jQuery根據傳入的參數確定了您要指定的功能。)

您可以使用標准的.click()處理程序輕松地實現自己的切換:

$("#bold").click(function() {
   var f = !$(this).data("toggleFlag");
   if (f) {
      $('.focus').css("font-weight", $(this).val());
   } else {
      $('.focus').css("font-weight", "normal");
   }
   $(this).data("toggleFlag", f);
});

這使用.data()方法跟蹤布爾標志以指示要執行的代碼。 第一次單擊單擊處理程序時,由於先前未設置該標志,因此該標志將返回undefined ,但是我們只是將其轉換為布爾值! (假設您要在第一次點擊時執行if和not else情況)。

它消失了,因為不贊成使用該版本的切換,並刪除了該版本,而在jQuery的較新版本中,它所做的只是切換可見性。

您可以改為執行以下操作:

var state = true;

$("#bold").on('click', function() {
    $('.focus').css("font-weight", state ? this.value : 'normal');
    state = !state;
});

小提琴

單擊后,我發現消失的元素的唯一解決方案是切換效果完成后的回調函數。 這里的鏈接說明了回調函數

這是我的代碼:

jQuery('.menu li.item-487').click(function(){
        jQuery('#main-menu .moduletable .menu li').toggle("slow",function(){jQuery('.menu li.item-487').css('display' , 'block');});

    });

暫無
暫無

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

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