使用Jquery更改文本字符串

时间:2016-03-05 07:48:41

标签: javascript jquery

我正在尝试在使用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>

谢谢!

2 个答案:

答案 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。因此,获取目标元素的文本并正确检查。

你也有一些语法错误,比如没有关闭打开的括号等。在将你的问题引起别人的注意之前,最好先看一下你的控制台。

DEMO

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