Щелчок привязки Jquery не работает

#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()» не работает…