使用jQuery更改文本后链接无法单击

时间:2010-06-20 01:28:47

标签: jquery anchor

在Joomla中,我在语言之间切换,不使用国家标志作为我所使用的语言的指示符,而是使用jQuery的replaceWith()方法将文本从英语切换到南非语。

我遇到的问题是,在第一次单击“英语”时,将其更改为南非荷兰语,该链接不起作用。但是当它需要回来时,它确实适用于切换。

请欣赏帮助。以下是我认为应该如何运作的逻辑:

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>");
  }
);

2 个答案:

答案 0 :(得分: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 :(得分: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')