Jquery绑定单击不工作

时间:2011-04-26 12:15:49

标签: jquery click bind

我有一个下拉菜单的代码:

var timeout    = 500;
var closetimer = 0;
var ddmenuitem = 0;

function jsddm_open()
{  jsddm_canceltimer();
   jsddm_close();
   ddmenuitem = $(this).find('ul').css('visibility', 'visible');
}

function jsddm_close()
{  if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}

function jsddm_timer()
{  closetimer = window.setTimeout(jsddm_close, timeout);}

function jsddm_canceltimer()
{  if(closetimer)
   {  window.clearTimeout(closetimer);
      closetimer = null;}}

$(document).ready(function() {
   $('#mainnavigation > li').bind('mouseover', jsddm_open)
   $('#mainnavigation > li').bind('mouseout',  jsddm_timer)});

document.onclick = jsddm_close;

我要修改它,以便下拉菜单会在“点击”上打开,而不会在“鼠标悬停”上打开,并在“鼠标输出”上关闭。我试过用这个:

$('#mainnavigation > li').bind('click', jsddm_open)

但它不起作用。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

首先,一些HTML会有所帮助。

除此之外,我认为您的功能有效,但点击<li>也会触发document.onclick = jsddm_close; 因此,您的菜单会立即打开和关闭。

尝试摆脱document.onclick行,看看它是否效果更好

您的return false;功能

结尾处还需要jsddm_open()

答案 1 :(得分:1)

你能试试吗?

 $('#mainnavigation > li').click(function() {
        jsddm_open();
 });

无论如何,我认为你错过了方法背后的“()”,但可能只是语法对我而言是新的..