2010-06-20 3 views
0

В Joomla я переключаюсь между языками, не использующими флаги страны, в качестве индикатора, на котором я нахожусь, но переключая текст с английского на африкаанс с помощью метода replaceWith() jQuery.Ссылки не меняются после изменения текста с помощью jQuery

Проблема, с которой я столкнулась, заключается в том, что при первом щелчке слова «английский», чтобы изменить его на африкаанс, ссылка не работает. Однако он работает над переключением, когда ему нужно вернуться.

Поблагодарили бы за помощь. Вот моя логика, как я думаю, что это должно работать:

jQuery(document).ready(function($) { 
$(".item48").toggle(
    function() { 
    $(this).replaceWith("<li class='active item48' id='current'><a href='index.php?lang=af'><span>English</span></a></li>"); 
    }, 
    function() { 
    $(this).replaceWith("<li class='active item48' id='current'><a href='index.php?lang=en'><span>Afrikaans</span></a></li>"); 
    } 
); 

ответ

1

Вы замена элемента, который имеет click обработчика (.toggle() является click обработчиком, и вы в настоящее время потери его), но на самом деле просто нужна изменить ссылку внутри, используя .html() так:

jQuery(document).ready(function($) { 
    $(".item48").toggle(
    function() { 
     $(this).html("<a href='index.php?lang=af'><span>English</span></a>"); 
    }, 
    function() { 
     $(this).html("<a href='index.php?lang=en'><span>Afrikaans</span></a>"); 
    } 
); 
}); 
1

это потому, что обработчик события не остаются нетронутыми. Вы можете использовать live в качестве альтернативы, но лучшим способом будет изменение href и текста.

jQuery(document).ready(function($) { 
$(".item48").toggle(
    function() { 
    $('a', this).attr('href', 'index.php?lang=en').find('span').text('English') 
    }, 
    function() {   
    $('a', this).attr('href', 'index.php?lang=af').find('span').text('Afrikaans') 
    } 
); 

Или используйте вместо этого $(this).html('HTML HERE').

Смежные вопросы