Jquery点击事件无效

时间:2013-01-10 19:21:59

标签: jquery css

在我的网页中,我使用了下拉选项卡的点击事件。但代码对我不起作用。 但如果我使用悬停而不是点击事件它运作良好。但我需要在我的网页代码中使用点击是:

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

                });
                });
            });

请帮我解决问题谢谢...

2 个答案:

答案 0 :(得分:2)

你有wrong syntax for the click event ..

它只接受一个函数处理程序,而不是你编写的

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

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

});

适用于悬停事件,因为它可以使用两个处理函数..

要使点击事件有效,您的签名必须

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

         // Click event code
});

// Remove the other function 

答案 1 :(得分:0)

从技术上讲,你不应该通过二次回调,发生的事情是你的:

$(this).stop();

在所有其他代码之前触发。 javascript忽略了你指定的第一个回调函数,因为.click只能在回调方法上接受。我很好奇你的.stop()甚至用于什么?我不完全确定,但我根本不认为你需要它。

另一条建议是使用.on()方法而不是单击。不推荐使用.click()方法,而不是使用类似的东西:

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

你正在做什么.click()只是调用这个.on()而且使用.on()更加可扩展意味着现在你可以绑定多个事件来监听,例如你可以这样做:

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