2014-01-31 2 views
0

Я новичок в jQuery, поэтому, возможно, это простой вопрос, но до сих пор я нашел хороший ответ. Возможно, я даже не нашел правильные ключевые слова для поиска ...jquery dropdown hide при нажатии внутри

У меня есть форма для входа в раскрывающийся список. Я использую его в typo3. Проблема заключается в том, что любой щелчок внутри формы входа скрывает/переключает drobboxbox. Вот сценарий:

<script type="text/javascript"> 
      $(function() { 
       var button = $('#loginButton'); 
       var box = $('#loginBox'); 
       var form = $('#loginForm'); 
       button.removeAttr('href'); 
       button.mouseup(function(login) { 
        box.slideToggle(); 
        button.toggleClass('active'); 
       }); 
       form.mouseup(function() { 
        return false; 
        }); 
       $(document).mouseup(function(login) { 
        if(!($(login.target).parents('#loginButton').length > 0)) { 
         button.removeClass('active'); 
         box.hide(); 
        } 
       }); 
      }); 

     </script> 

Может быть кто-то может помочь? Спасибо заранее!

+0

Можете ли вы предоставить JSFiddle? – rockStar

+0

Hi tahnks много для ответа Итак, я очень новый в jquery, я пытался предоставить JSFiddle (извините, если это неправильно, мой первый раз!) – user3257708

+0

забыли ссылку: http://jsfiddle.net/9bWDN/ – user3257708

ответ

0

использовать что-то вроде этого:

$('selector').mouseenter(function(){ 

    //do something when mouse is over 
    }).mouseleave(function(){ 

    //do something when mouse out 
    }); 
0

из Jquery Docs: событие MouseUp посылается к элементу, когда указатель мыши находится над элементом, и кнопка мыши отпущена.

Я угадываю: вы хотите использовать обработчик click-event здесь ?!

button.click(function() { 
    box.slideToggle(); 
    button.toggleClass('active'); 
}); 

Здесь вы привязываетесь ко всем событиям мыши, которые происходят на вашем сайте typo3. В том числе вышеприведенные loginForm! Так он будет скрывать свою форму на любом MouseUp

$(document).mouseup(function(login) { 
    if(!($(login.target).parents('#loginButton').length > 0)) { 
     button.removeClass('active'); 
     box.hide(); 
    } 
}); 

U может попробовать это:

$(document).bind("mouseup",function(e){ 
    console.log(e.target) 
}) 

e.target расскажет вам, выше которого Див мышь была выпущена. U могли бы хотеть, чтобы проверить что-то вроде этого:

$(document).mouseup(function(login) { 
    if(login.target.id == "loginForm"){return false} 

    if(!($(login.target).parents('#loginButton').length > 0)) { 
     button.removeClass('active'); 
     box.hide(); 
    } 
}); 

удачи!

+0

Спасибо за ответы. Я использовал без – user3257708

+0

button.removeClass ('active'); box.hide(); и он работает – user3257708

+0

, пожалуйста, проголосуйте и отметьте как решение;) – Stephan