需要绕过jquery切换功能

时间:2010-06-22 13:31:28

标签: jquery toggle

我需要能够绕过切换的第一个功能,我想知道jquery切换是如何工作的?

据我所知,如果我点击某些内容,则会执行第一个功能,然后当我再次点击它时,会执行第二个功能。

我需要做的是绕过第一个功能并直接转到第二个功能。

我这样做的原因是按钮的状态已被另一个发生的事件更改。当我第一次点击该按钮时,它假定它是第一次被点击,并且当我需要它执行第二个功能时将执行第一个功能。

有解决方法吗?如果jQuery toggle函数等于true或false,那么我应该能够检查这个并调用正确的脚本吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

我假设在第一个切换之前,其他事件总是 ,否则你可以反转这些功能。

你可以改变你的其他事件来解雇切换吗?如果另一个事件执行相同的任务,那么这将是要走的路。

  // From within the other event's handler
$(someselector).click();  // to fire the toggle

否则,您可以使用.data()在元素上放置一个标志,以检查toggle()是否已经触发了。如果没有,则进行第一次功能测试,以查看该元素是否已被其他事件修改过。

$(someselector).toggle(
    function() {
        var $th = $(this);
        if( !$th.data('toggled') ) {  // Check if toggle has not yet run
            $th.data('toggled', true);    // If not, set flag it to show it has run
            if( some_test_to_see_if_modified_externally ) {
                $th.click() // fire the second toggle
                return;     // return if element has been modified externally
            }
        } 
        // otherwise run the normal code  
    },
    function() {
        // your normal code
    }
);

答案 1 :(得分:0)

您可以在切换功能之外创建变量:var isFirstToggle = true;

然后在你的切换回调中,如果它等于true则返回;

var isFirstToggle = true;
$("#myId").toggle(function(){
   if (isFirstToggle === true){
      isFirstToggle = false;
      return;
}, function(){
   //do stuff on second toggle.
});

让我知道你的想法,如果这看似合适。可能有更简洁的方法来处理它,但这应该是快速的肮脏。