jQuery: почему мое событие click на элементе li не работает?
Я хочу переместить Div-элемент "nav", когда был нажат li-элемент.
у меня есть список в div
<div id="nav">
<ul>
<li><a href="#t1">Flyer</a></li>
<li><a href="#t2">Code</a></li>
<li><a href="#t3">Angebot</a></li>
<li><a href="#t4">Bilder</a></li>
</ul>
</div>
почему это не работает в jquery:
$("#nav ul li").click(function(){
$("#nav").animate({
marginLeft: "-300px",
}, 1000 );
});
4 ответов
код работает нормально, как вы ожидаете, просмотрите JSFiddle.
У меня такое чувство, что вы забываете что-то вроде ввода его в событие jQuery DOM Ready.
убедитесь, что код выглядит так (внутри DOM Ready)
$(document).ready(function(){ // When the DOM is Ready, then bind the click
$("#nav ul li").click(function(){
$("#nav").animate({
marginLeft: "-300px",
}, 1000 );
});
});
убедитесь, что на Вашей странице нет других ошибок javascript (если вы это сделаете до этого кода, код не будет работать), Проверьте консоль (в chrome щелкните правой кнопкой мыши > проверить элемент > консоль).
один из эти 2 проблемы вызывают ваши проблемы (скорее всего), иначе вам придется отлаживать его самостоятельно (или показать нам больше кода).
в зависимости от того, какую версию Jquery вы используете, это может работать или не работать:
$('body').on('click', '#nav ul li', function(){
$("#nav").animate({
marginLeft: "-300px",
}, 1000 );
});
Я сделал $('body'), потому что если вы генерируете эти li динамически, вам нужно связать "делегированные события", как они называются.
он работает так, как ожидалось, но вы должны нажать на li-element. Если вы нажмете на якорь, он может сломаться в некоторых браузерах.
вот лучший подход к этому.
HTML-код
<div id="nav">
<ul>
<li><a href="#t1">Flyer</a></li>
<li><a href="#t2">Code</a></li>
<li><a href="#t3">Angebot</a></li>
<li><a href="#t4">Bilder</a></li>
</ul></div>
jQuery
(function($) {
var nav = $('#nav');
nav.find('a').on('click',function(e){
e.preventDefault();
nav.animate({
marginLeft: "-300px",
}, 1000 );
});
})(jQuery);
и, конечно, скрипка:http://jsfiddle.net/dKPqJ/
попробуйте этот, и я думаю, что в вашем коде также нет ошибки.
насколько мне известно, ваш код будет работать, если вы дадите поплавок:слева собственность за #nav.
Если вы устанавливаете позиция тогда будет работать следующий код.
$(document).ready(function(){
$("#nav ul li").click(function()
{
$("#nav").animate({
left: "-=300px",
}, 1000 );
});
});
или попробуйте этот
$(document).ready(function(){
$("#nav ul li").click(function()
{
$("#nav").animate({
"left": "-=300px"
},
"slow");
});
});