Javascript Can';不要切换文本

Javascript Can';不要切换文本,javascript,jquery,html,Javascript,Jquery,Html,在本例中,我试图通过匹配数据属性使每对按钮切换文本。我可以在单击时将文本从“添加”更改为“删除”。但我不能在第二次单击时将其切换回“添加”。有人能告诉我有什么问题吗 HTML: 您使用类选择器获取文本,因此其返回的所有元素的文本都带有类my_choice,在本例中是addadd而不是add,对于remove caseremove而不是remove,因此使用$(this).text()获取当前单击的文本 所以你必须这样做: $('.my_choice').click(function(){

在本例中,我试图通过匹配数据属性使每对按钮切换文本。我可以在单击时将文本从“添加”更改为“删除”。但我不能在第二次单击时将其切换回“添加”。有人能告诉我有什么问题吗

HTML:


您使用类选择器获取文本,因此其返回的所有元素的文本都带有类my_choice,在本例中是addadd而不是add,对于remove caseremove而不是remove,因此使用
$(this).text()
获取当前单击的文本

所以你必须这样做:

$('.my_choice').click(function(){
    var text= $(this).text();
      var dataterm = $(this).data('term'),

          my_choice = $('.my_choice[data-term='+dataterm+']')
      console.log(my_choice.text())
      if (text == "Remove")
      {
          my_choice.text("Add")
      }
      else
      {
          my_choice.text("Remove")
      }

});

您使用类选择器获取文本,因此其返回的所有元素的文本都带有类my_choice,在本例中是addadd而不是add,对于remove caseRemoveMove而不是remove,因此使用
$(this).text()
获取当前单击的文本

所以你必须这样做:

$('.my_choice').click(function(){
    var text= $(this).text();
      var dataterm = $(this).data('term'),

          my_choice = $('.my_choice[data-term='+dataterm+']')
      console.log(my_choice.text())
      if (text == "Remove")
      {
          my_choice.text("Add")
      }
      else
      {
          my_choice.text("Remove")
      }

});

只需更改条件以引用单击的项目,而不是所有匹配的按钮

if (my_choice.text() == "Remove")
致:

现在,您正试图从多个按钮读取
text()
,这就是它不起作用的原因。您需要将
text()
限制为仅从一个按钮读取

编辑:


更新我的答案以引用小提琴。

只需更改条件以引用单击的项目,而不是所有匹配的按钮

if (my_choice.text() == "Remove")
致:

现在,您正试图从多个按钮读取
text()
,这就是它不起作用的原因。您需要将
text()
限制为仅从一个按钮读取

编辑:

更新我的答案以引用小提琴。

正如我前面指出的,您的代码总是输入else

$('.my_choice').click(function(){
      var dataterm = $(this).data('term'),


      if ($(this).text() === "Remove")//change only applied in your code and added some semi colon 
      {
          my_choice.text("Add");

      }
      else
      {
          my_choice.text("Remove");
      }

});

正如我前面指出的,您的代码总是输入else

$('.my_choice').click(function(){
      var dataterm = $(this).data('term'),


      if ($(this).text() === "Remove")//change only applied in your code and added some semi colon 
      {
          my_choice.text("Add");

      }
      else
      {
          my_choice.text("Remove");
      }

});

尝试调试,打印到控制台以查看错误所在。您的问题总是进入else循环,这就是为什么在if循环之前添加警报,您会发现发生这种情况的原因。Yi:您发布的jquery与您的小提琴中的jquery不匹配。您的条件已颠倒。尝试调试,打印到控制台以查看错误所在。您的问题on always enters else循环这就是为什么在if循环之前添加一个警报,然后你会发现为什么会发生这种情况Yi:你发布的jquery与你的小提琴中的jquery不匹配。你的条件颠倒了。+1用于添加解释当前代码为什么不工作,而不是只显示工作的代码。+1用于添加解释当前代码为什么不工作。+1用于添加解释当前代码不起作用,而只是显示起作用的代码。