0

aidのリンクがあり#searchBoxPop2ます。クリックしたら、#searchBoxPop2.toggle機能をトリガーしたい。私の問題は、トグルをトリガーするためにリンクを2回クリックする必要があることです。この汚いスクリプトを手伝ってくれませんか?どうもありがとう

  $('#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');

      }
  });

コードの残りの部分と、Imがdetialで何をするのかを説明してほしい場合は、お知らせください。

4

1 に答える 1

1

コメントで述べたように、toggleイベント関数はjQuery1.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 に答える