点击事件内部的功能需要2次点击才能触发

时间:2013-03-23 21:32:42

标签: jquery

我有a个ID为#searchBoxPop2的链接。点击后,我想触发#searchBoxPop2.toggle功能。我的问题是我必须在链接上单击两次才能触发切换。你能帮助这个脏脚本吗?非常感谢

  $('#searchBoxPop2').live('click', function () {
      if (!$('.header-wrapper-home').length) {
          $('div.right-block').show();

              $('#searchBoxPop2').toggle(
              function () {
              $('.detail-page-content').animate({
                  marginTop: "+=290px"
              }, 800)
          },
              function () {
              $('.detail-page-content').animate({
                  marginTop: "0px"
              }, 800);
          });
      }
      if ($('.header-wrapper-home').length) {
          $('.header-wrapper-home').slideToggle('slow');

      }
  });

如果您希望我解释其余代码以及我将在detial中做什么,请告诉我。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,toggle event function在jQuery 1.9中已被弃用。 因此,您需要使用自己的方法来交替调用。起初我很生气,没有内置替代品,但这种方法更简洁。特别是因为一旦格式化了,就很容易复制到任何其他事件调用。

这是我刚写的一个快速而又脏的回调函数。可能有更好的方法来实现这一目标,但这是一个很好的起点:

function () {
    var number = 2; // the number of events you toggle through
    if (! window.toggle_counter )
        window.toggle_counter = 0;
    switch (window.toggle_counter) {
        case 0:
            // do some things
            break;
        case 1:
            // do other things
            break;
        // etc ..
    }
    window.toggle_counter = (window.toggle_counter + 1) % number;
}

请注意window.variable_name是全局范围,因此要小心冲突。