0

我有一个aid 的链接#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');

      }
  });

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

4

1 回答 1

1

正如我在评论中所说,切换事件功能在 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 是全局范围,因此请注意冲突。

于 2013-03-23T22:16:07.117 回答