首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在jquery中使用切换执行两个函数?

如何在jquery中使用切换执行两个函数?
EN

Stack Overflow用户
提问于 2014-04-09 07:59:24
回答 1查看 671关注 0票数 0

我使用toggle()函数来执行两个函数。当我单击带有class=“宠儿”的图像时,在第一次单击时,必须执行第一个函数,并且我应该得到警报(‘test1’);对于第二个单击,必须执行第二个函数,我应该得到警报(‘test2’),并且执行必须停止。

我的问题是,当第二次单击图像时,我得到警告(‘test2’),然后是警报(‘test1’),第二次单击时只执行第二个函数,即在第二次单击时只得到警告(‘test2’)。如何在第二次单击时停止第一个函数的执行?

这是我在index.phtml文件中的jquery代码:

代码语言:javascript
代码运行次数:0
运行
复制
jqry("#wrap").delegate('img.favourite','click',function(){ 
    var id = jqry(this).attr('pid');
    jqry('#'+id).toggle(function(){
            alert('test1');     
        },
        function(){
            alert('test2');
        }
    );
});

这是我在JS文件中的代码

代码语言:javascript
代码运行次数:0
运行
复制
    <img class="favourite"  src="images/fav.png" alt="favourite" pid ='project_id'>

我第一次点击得到的输出是test1

第二次单击得到的输出是test2 test1

在第二次单击时,我应该获得输出警报test2并停止执行,但它将进一步执行前面的函数,并给出两个警报,即test2test1。我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 08:10:33

您使用的.toggle()格式在jQuery 1.8中被废弃,在1.9中被删除。此外,每次调用它时,它都会绑定一个单击处理程序,因此您真的不想多次调用它--这可能是您看到两个警报的原因,因为每次绑定它时,都会在单击时再得到一个回调。第一次,第二次,第三次,等等。

我建议你在每次点击时找到一种不同的交替函数的方法。也许只需使用.data()在项目上设置一个标志,然后根据标志设置一个备用标志。

对于id元素上的.toggle()函数,还不太清楚,但这将使您可以交替调用函数,然后可以在每个函数中实现您想要的任何操作:

代码语言:javascript
代码运行次数:0
运行
复制
jqry("#wrap").delegate('img.favourite', 'click', function() { 
    var toggle = $(this).data("toggleFlag") || false;
    var id = jqry(this).attr('pid');
    if (toggle) {
         // do whatever you want with id here
         alert("test1");
    } else {
         // do whatever you want with id here
         alert("test2");
    }
    // reverse the toggle flag
    $(this).data("toggleFlag", !toggle);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22956278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档