0

私の Web ページでは、ドロップダウン タブにクリック イベントを使用しましたが、コードが機能しませんでした。しかし、クリックイベントの代わりにホバーを使用するとうまく機能します.しかし、Webページコードでクリックを使用する必要があります:

  $(document).ready(function(){
                var dropDownSpeed = 200;
                var dropUpSpeed   = 200;
                var menuHeight = '240px';
                var tabs = $("#tabs");
                var tabPanesContainer = $("ul#tabPanes");
                var tabPanesAll = tabPanesContainer.find("li").css("position", "absolute");

                $(".slide").click(function () {

                    var thisMenuItem = $(this);

                    /*get the offset of this item in respect to the page*/
                    var thisMargin   = thisMenuItem.offset().center;

                    /*get the offset of the navigation bar in respect to the page*/
                    var tabsOffset   = tabs.offset().center;
                    var thisIndex = thisMenuItem.index();

                    thisMargin = Math.floor(thisMargin - tabsOffset);


                    var thisOffset = thisMargin - 52;

                    /* handle IE margin difference*/
                    if($.browser.msie)
                    {
                      thisOffset = thisMargin - 15;
                    }


                    tabPanesContainer.css('margin-left', thisOffset);

                    tabPanesContainer.stop().animate({
                        height: menuHeight
                    }, dropDownSpeed);



                    tabMenuLinks.removeClass('activeTab');
                    thisMenuItem.addClass('activeTab');


                    var thisHash = thisMenuItem.find("a").attr('href');
                    var tabClicked = tabPanesAll.filter(thisHash);


                    tabClicked.appendTo(tabPanesContainer).show();



                    return false;


                }, function() {

                   $(this).stop();

                });
                });
            });

問題を解決するのを手伝ってください ありがとう...

4

2 に答える 2

2

あなたはwrong syntax for the click event..

あなたが書いたように2つではなく、1つの関数ハンドラーのみを取り込みます

 $(".slide").click(function () {

     // Click event code
 }, function() {
              $(this).stop();

});

2 つのハンドラー関数を使用できるため、ホバー イベントで機能します。

クリックイベントが機能するには、署名が必要です

$(".slide").click(function () {

         // Click event code
});

// Remove the other function 
于 2013-01-10T19:24:43.313 に答える
0

技術的には、セカンダリコールバックを渡すべきではありません。何が起こっているのかは、次のとおりです。

$(this).stop();

他のすべてのコードの前に起動しています。.clickはコールバックメソッドでのみ受け入れることになっているため、javascriptは指定した最初のコールバック関数を無視します。あなたの.stop()は何に使われているのでしょうか?完全にはわかりませんが、それが必要だとは思いません。

もう1つのアドバイスは、クリックの代わりに.on()メソッドを使用することです。.click()メソッドは非推奨になっているため、次のようなものを使用する代わりに、次のようにします。

$(".slide").on('click', function () {
    // Click event code
});

.click()で行っているのは、とにかくこの.on()を呼び出すことです。さらに、.on()を使用すると、はるかに拡張可能になります。つまり、複数のイベントをバインドしてリッスンできるようになります。たとえば、次のように実行できます。

$(".slide").on('click, mouseover, mouseenter', function () {
    // Click event code
});
于 2013-01-10T19:56:39.343 に答える