正确使用jQuery切换?

时间:2011-09-17 13:48:44

标签: jquery class toggle

在此stackoverflow answer

$('#user_button').toggle(function () {
    $(".hello").addClass("active");
}, function () {
    $(".hello").removeClass("active");
});

jQuery .toggle回调函数用于向元素添加和删除类。现在根据jQuery .toggle documentation.toggle最初用于在所选元素的可见性状态之间切换。

我做了一个jsfiddle演示:http://jsfiddle.net/taheri/nYdng/

在我的示例中,它似乎只在回调函数之间交替,并且 #user_button 本身的可见性未被切换。我在这里的文档中错过了什么?切换是否可以仅用于在功能之间交替?

谢谢!

5 个答案:

答案 0 :(得分:4)

有两种切换方法...... this一种和this一种。他们应该以不同的方式命名它们以避免这种混淆。

答案 1 :(得分:1)

从您提供的jquery文档链接:

  

注意:事件处理套件还有一个名为.toggle()的方法。   触发哪一个取决于传递的参数集。

因为您传递了两个函数作为参数,所以正在调用事件处理套件的toggle()函数。

答案 2 :(得分:0)

在jQuery中(在检查1.6.2源代码之后),.toggle()支持许多不同类型的参数。它支持的一件事是传递两个回调函数。如果这就是你传递的内容,它将在你第一次调用它时调用第一个函数,第二次调用它时它将调用第二个函数,它将每次都交替。 “

当您将函数传递给它时,除了调用函数之外,它不执行任何其他操作。如果你想隐藏和展示某些东西,你必须在你的功能中这样做。

你可以在这里看到它:http://jsfiddle.net/jfriend00/QGz5c/

jQuery文档没有说明这一点。 .toggle()应该只有一套文档描述了你可以传递的所有选项,但正如Šime所指出的,对于你可以传递的不同类型的参数,有两套完全不同的文档。< / p>

答案 3 :(得分:-1)

由于您正在切换#user_button,因此$(".hello")的可见性未被切换。那是

$('#user_button').toggle(function () {
    $(this).hide();
    $(".hello").addClass("active");
}, function () {
    $(this).show();
    $(".hello").removeClass("active");
});

然后会更改#user_button的可见性。

答案 4 :(得分:-1)

要在类之间切换,使用jQuery的toggleClass()方法。 jQuery中还有其他类似slideToggle()的切换,它们只是animate函数的快捷方式。

但是,根据您提供的链接,您无法为toggle()方法提供两个回调函数。您应该只提供持续时间(可选),缓动(也可选)和回调(再次可选),或者您只需提供一个布尔值。

我检查了你的代码,它似乎工作得很好。但是,我认为这种用法可能不是最好的做法。我还在寻找什么是错的。