Замена текста в переключенном якоре с помощью JQuery - PullRequest
1 голос
/ 14 мая 2010

Я пытаюсь изменить текст в привязке при переключении. Сейчас я делаю так, но обнаружил, что после замены разметки якорь больше не работает. Может кто-нибудь объяснить, почему это происходит, и решение? Большое спасибо.

    $('a#toggleHeader').toggle(function() {
    $('#header-wrapper').slideUp();
    $(this).replaceWith('< href=\"#\" id="toggleHeader">Show Header</>');

// Примечание: я переместил привязку, потому что я могу опубликовать только одну привязку как новый пользователь

},function(){
    $('#header-wrapper').slideDown();
    $(this).replaceWith('<a href=\"#\" id="toggleHeader">Hide Header</a>');

});

1 Ответ

5 голосов
/ 14 мая 2010

Просто измените содержимое якоря, вместо замены всего этого:

$('a#toggleHeader').toggle(function() {
    $('#header-wrapper').slideUp();
    $(this).text('Show Header');
}, function () {
    $('#header-wrapper').slideDown();
    $(this).text('Hide Header');
});

Причина, по которой он больше не работал, заключается в том, что обработчики событий терялись при удалении (и замене) якоря. Если вы хотите, чтобы ваш пример работал, вам нужно будет либо перепривязывать события при каждой их замене, либо связывать события, используя методы live() или delegate().

...