#jquery #click #bind
#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 с вашим «выпадающим списком»
Ответ №1:
Во-первых, немного HTML помогло бы.
Кроме того, я думаю, что ваша функция работает, но нажатие на <li>
также запускает document.onclick = jsddm_close;
, поэтому ваше меню открывается и закрывается сразу.
Попробуйте избавиться от document.onclick
строки и посмотрите, работает ли она лучше
Вам также понадобится return false;
в конце вашей jsddm_open()
функции
Ответ №2:
Можете ли вы попробовать это?
$('#mainnavigation > li').click(function() {
jsddm_open();
});
В любом случае, я думаю, что вам не хватает «()», стоящего за методами, но, возможно, просто синтаксис для меня новый..
Комментарии:
1. Использовал это, и это не работает. Странно то, что я использовал «alert (‘test’)» после «jsddm_open()», и оповещение работает. функция «jsddm_open()» не работает…