[英]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.