我正在尝试在使用Jquery单击链接时更改/恢复文本字符串。现在这个代码的第一个声明工作正常,但另一个没有。有人可以帮忙弄清楚这里出了什么问题吗?
<script>
$("document").ready(function(e) {
$("#newMessagelink").click(function(e) {
$("#new-msg").toggle();
if($("#newMessagelink").text("New Message") {
$("#newMessagelink").text("Back to Inbox");
} else if($("#newMessagelink").text("Back to Inbox")) {
$("#newMessagelink").text("New Message");
}
})
});
</script>
谢谢!
答案 0 :(得分:2)
尝试正确使用.text()
,
$("document").ready(function(e) {
$("#newMessagelink").click(function(e) {
$("#new-msg").toggle();
var txt = $(this).text();
$(this).text(txt == "New Message" ? "Back to Inbox" : "New Message");
});
});
.text("something")
将返回jquery wrapper object
。如果您在if statement
中传递它,则它总是评估为true
。因此,获取目标元素的文本并正确检查。
你也有一些语法错误,比如没有关闭打开的括号等。在将你的问题引起别人的注意之前,最好先看一下你的控制台。
答案 1 :(得分:1)
您的if
语句将始终为true,因为 text(string)
始终返回jQuery对象。相反,您可以使用 text() with callback
做一些简单的事情。此外,您可以使用this
代替#newMessagelink
选择器,因为点击处理程序this
内部引用了#newMessagelink
。
$("document").ready(function(e) {
$("#newMessagelink").click(function(e) {
$("#new-msg").toggle();
$(this).text(function(i, text) {
return text == "Back to Inbox" ? "New Message" : "Back to Inbox";
});
})
});
使用您自己的代码正确更改if条件
$("document").ready(function(e) {
$("#newMessagelink").click(function(e) {
$("#new-msg").toggle();
var text= $(this).text();
if(text=="New Message") {
$(this).text("Back to Inbox");
} else if(text=="Back to Inbox") {
$(this).text("New Message");
}
})
});