为什么当我在 jQuery 中添加切换事件时我的按钮消失了

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

本文关键字:事件 我的 消失了 按钮 添加 jQuery 为什么      更新时间:2023-09-26

我想在粗体和正常之间切换文本 我为它编写了这段代码,但是当我打开页面时,粗体按钮消失了?

    $("#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 而不是 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');});
    });