2012-01-25 9 views
1

Что бы я хотел, очень просто, но я борюсь с синтаксисом. Когда мой элемент щелкнул, мне бы хотелось, чтобы мой анимат был запущен и сразу после .css(). Спасибо заранее за вашу помощь. Приветствия. Марк.Jquery on click trigger two «events»

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast"), 
    $(this).prev().css("display": "none"); 
}); 
+0

Можете ли вы вставить html здесь? – sathishkumar

+0

вы знаете, что '.css (" display "," none ")' совпадает с '.hide()' right? –

ответ

4

Практически. Вам нужно пройти complete аргумент на animate функцию ссылку:

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", function() { 
      $(this).prev().css("display", "none"); 
     } 
    ); 
}); 

(Кроме того, ваш синтаксис css откусила, вы хотели , вместо :)

+0

Поскольку javascript имеет область видимости функции, если вы завершаете вызов внутри другой функции, этот «указывает» на другой объект, а не на объект с щелчком (по крайней мере, это то, что я думаю) –

+0

Большое спасибо за помощь Андрею. Прекрасно работает! – Marc

+1

@NicolaPeluchetti: Правильно, 'this' в обратном вызове будет ссылаться на анимированный объект. –

1

Вы поставкой второй части как функция обратного вызова, что означает, что она выполняется после завершения первой функции. Если вы действовали на то же elemnt в качестве первой анимации, то вы могли бы использовать цепочку («Я не уверен, что вы можете использовать ее в этом случае, потому что вы не предоставили html).

$('.content').click(function() { 
    $('#contentWrapper').animate(
     {"left": "-=475px"}, 
     "fast", 
     function(){ 
      $(this).prev().css("display": "none"); 
     } 
    ); 
}); 
2

Вы должны предоставить вторую функцию обратного вызова

$('.content').click(function() { 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", $(this).prev().css("display": "none")); 
    }); 
}); 

EDIT - Я думаю, что таким образом this указует на нажатый элемент. Если вы не должны делать

$('.content').click(function() { 
    var that = this; 
    $('#contentWrapper').animate({ 
     "left": "-=475px"}, "fast", $(that).prev().css("display": "none")); 
    }); 
});