2011-04-26 41 views
0

我有一個下拉菜單下面的代碼:Jquery的綁定單擊不工作

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) 

但它不工作。

有人可以幫助我嗎?

+1

以顯示你的HTML你「下拉菜單」 – 2011-04-26 12:18:11

回答

2

首先,一些HTML將有所幫助。

除此之外,我認爲你的功能可以工作,但點擊<li>也會觸發document.onclick = jsddm_close; 所以你的菜單馬上打開和關閉。

嘗試擺脫document.onclick線,看看它是否效果更好

您還需要一個return false;jsddm_open()函數結束

1

你可以試試嗎?

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

無論如何,我認爲你缺少的「()」背後的方法,但它可能只是語法是新的我..

+0

使用這一點,它不起作用。奇怪的是我在「jsddm_open()」後面使用了一個「alert('test')」,並且警報有效。 「jsddm_open()」函數不... – Andrei 2011-04-26 14:09:00