使用 jQuery 更改文本后链接不可点击
在 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>");
}
);
In Joomla, I am switching between languages not using the country flags as the indicator which language I am on but switch the text from English to Afrikaans using jQuery's replaceWith() method.
Problem I am having is that on first click of the word English, to change it to Afrikaans, the link does not work. It does however work on the toggle when it needs to come back.
Would appreciate the help please. Here's my logic of how I think it should work:
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>");
}
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您要替换具有
click
处理程序的元素 (.toggle( )
是一个点击
处理程序,您当前正在丢失它),但您实际上只需要更改内部的链接,使用< a href="http://api.jquery.com/html/" rel="nofollow noreferrer">.html()
像这样:You're replacing the element that has the
click
handler (.toggle()
is aclick
handler, and you're currently losing it), but you really just need to change the link inside, using.html()
like this:那是因为事件处理程序不会保持完整。您可以使用
live
作为替代方案,但更好的方法是更改 href 和文本。或者使用
$(this).html('HTML HERE')
代替。That's because the event handler doesn't stay intact. You can use
live
as an alternative, but the better method would be changing the href and text.Or use
$(this).html('HTML HERE')
instead.