当前位置: 首页 > 面试题库 >

jQuery单击/在两个功能之间切换

晋言
2023-03-14
问题内容

我正在寻找一种方法,当单击某些内容时,可以运行两个单独的操作/函数/“代码块”,然后在再次单击同一内容时,运行一个完全不同的块。我把这个放在一起。我想知道是否有更有效/更优雅的方法。我知道jQuery.toggle(),但是有点烂。

var count = 0;
$("#time").click(function() {
    count++;
    //even odd click detect 
    var isEven = function(someNumber) {
        return (someNumber % 2 === 0) ? true : false;
    };
    // on odd clicks do this
    if (isEven(count) === false) {
        $(this).animate({
            width: "260px"
        }, 1500);
    }
    // on even clicks do this
    else if (isEven(count) === true) {
        $(this).animate({
            width: "30px"
        }, 1500);
    }
});

问题答案:

jQuery有两个称为的方法.toggle()。在另一个 [文件]
不正是你想要的click事件。

注意: 似乎至少从 jQuery 1.7开始 ,此版本.toggle弃用
,可能正是出于这个原因,即存在两个版本。利用.toggle改变元素的知名度仅仅是一个更常见的用法。该方法已 在jQuery 1.9
删除

下面是一个示例,说明了如何实现与插件相同的功能(但可能会暴露与内置版本相同的问题(请参阅文档的最后一段))。

(function($) {
    $.fn.clickToggle = function(func1, func2) {
        var funcs = [func1, func2];
        this.data('toggleclicked', 0);
        this.click(function() {
            var data = $(this).data();
            var tc = data.toggleclicked;
            $.proxy(funcs[tc], this)();
            data.toggleclicked = (tc + 1) % 2;
        });
        return this;
    };
}(jQuery));

演示

(免责声明:我不是说这是最好的实现!我敢打赌,可以在性能方面进行改进)

然后调用:

$('#test').clickToggle(function() {   
    $(this).animate({
        width: "260px"
    }, 1500);
},
function() {
    $(this).animate({
        width: "30px"
    }, 1500);
});

更新2:

同时,我为此创建了一个合适的插件。它接受任意数量的功能,并可用于任何事件。可以在GitHub上找到它。



 类似资料:
  • 我需要做一个网站,我可以添加一些东西到购物车。我不需要存储任何数据,所以只需要将一个类更改为'Added Incart'就足够了。这是我目前所拥有的,但它还不起作用。我知道我得到的所有类名都会回到一个数组中。我只是不知道如何改变他们,如果按钮被点击。我用addEventListener和toggle做了很多尝试,但我刚刚开始编程,还不是所有的事情都对我来说都很清楚。我不打算使用Jquery,只使用

  • 假设你有两个活动-A和B,你从A开始B。在B中,你有一个任务。如果任务完成,您希望返回到按下when back键,如果没有,您希望取消整个应用程序。但在解除后,你可以从最近的应用程序菜单中恢复B。如果在那之后你需要同样的后退键的行为。 因此,我想放弃一个活动或整个应用程序(但简历的可能性)。有什么办法可以做到这一点吗?

  • 问题内容: 正如教程向我展示的那样,我已经在最初的几个脚本上构建了一个不错的GUI,但是没有一个脚本解决更复杂的程序的问题。 如果在打开屏幕上有带有“开始菜单”的内容,并且在用户选择后移动到程序的其他部分并适当地重画屏幕,那么执行此操作的优雅方法是什么? 是否只是一个“开始菜单”框架,然后创建一个新的窗口小部件,并填充另一部分的小部件?并在他们按下“后退”按钮时逆转此过程? 问题答案: 一种方法是

  • 问题内容: 我想在Python中的两个值之间切换,即0到1之间。 例如,当我第一次运行一个函数时,它产生数字0。下一次,它产生1。第三次它返回零,依此类推。 抱歉,如果这样做没有道理,但是有人知道这样做的方法吗? 问题答案: 用途: 请注意,如果您需要比更为复杂的周期,那么此解决方案将比此处发布的其他解决方案更具吸引力。

  • 我是JavaFX的新手,我需要在两个没有菜单栏的锚窗格之间切换,但锚窗格本身中有注册按钮,它应该切换到注册表单表单登录表单我正在使用Scene Builder生成.fxml文件, 我的问题是如何以一种简单的方式做到这一点?loginform与注册按钮 ERRRO是 null main.java controller.java 我的问题是如何在main.java中加载register form,在单

  • 我目前正在intelij内部制作一个游戏的框架,因为我还不能做图形处理。目前的情况是,我需要对话,所以我需要使用打印功能和它们之间的暂停。 所以我知道一些想法,比如睡眠和等待功能,但我不确定我是否输入错误,或者它们只是另一种语言(顺便说一句,它是java的)