在我的网页中,我使用了下拉选项卡的点击事件。但代码对我不起作用。 但如果我使用悬停而不是点击事件它运作良好。但我需要在我的网页代码中使用点击是:
$(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();
});
});
});
请帮我解决问题谢谢...
答案 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
});