Jquery при нажатии вызывает два «события» - PullRequest
1 голос
/ 25 января 2012

То, что я хотел бы, очень просто, но я борюсь с синтаксисом.Когда щелкнул элемент, я бы хотел, чтобы моя анимация была запущена и сразу после .css ()Спасибо заранее за вашу помощь.Приветствия.Марк.

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

Ответы [ 3 ]

4 голосов
/ 25 января 2012

Почти.Вам необходимо передать аргумент complete в animate ссылку на функцию:

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

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

2 голосов
/ 25 января 2012

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

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

РЕДАКТИРОВАТЬ - я думаю, что таким образом this указывает на элемент, по которому щелкнули.Если это не ты должен сделать

$('.content').click(function() {
    var that = this;
    $('#contentWrapper').animate({
        "left": "-=475px"}, "fast", $(that).prev().css("display": "none"));
    });
});
1 голос
/ 25 января 2012

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

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