2013-03-14 93 views
1

我有一個簡單的任務,可以在按下按鈕後更改按鈕上的文本。這是我的腳本:JQuery更改文本

$(".recent").on("click", 'button', function() { 
     $(this).closest($("li")).find($(".content")).slideToggle(); 
     if ($(this).text="Show content") { 
      $(this).text("Hide content"); 
     } else { 
      $(this).text("Show content"); 
     } 
    }); 

當我按下按鈕,文本更改爲「隱藏內容」。但是當我再次按下按鈕時,它不會變回「顯示內容」。 猜猜它是關於簡單的東西...將不勝感激任何幫助。

回答

2

使用===進行比較。您使用的是分配值的=。 還.text()是一種方法

$(".recent").on("click", 'button', function() { 
    $(this).closest('li').find('.content').slideToggle(); 
    if ($(this).text() === "Show content") { 
     $(this).text("Hide content"); 
    } else { 
     $(this).text("Show content"); 
    } 
}); 
4

您需要使用等效===而不是分配=和使用文本(),而不是文本

$(".recent").on("click", 'button', function() { 
     $(this).closest($("li")).find($(".content")).slideToggle(); 

     if ($(this).text() === "Show content") { 
      $(this).text("Hide content"); 
     } else { 
      $(this).text("Show content"); 
     } 
    }); 
+0

,他用'$(本).text'(返回'Function'),而不是'$(本)的.text()'(返回一個字符串':

試試這個') – 2013-03-14 17:48:16

+1

沒有必要將jQuery對象傳遞到'nearest'和'find'。他們都採取選擇器字符串。 – Blender 2013-03-14 17:50:03

1

.text()是一個方法,所以你必須給它打電話獲取並設置文字:

$(".recent").on("click", 'button', function() { 
    var $this = $(this); 

    $this.closest("li").find(".content").slideToggle(); 

    if ($this.text() === "Show content") { 
     $this.text("Hide content"); 
    } else { 
     $this.text("Show content"); 
    } 
}); 
1

.text方法,因此需要跟着()。此外,爲了平等,請使用==而不是=,單個=用於分配。此外

$(".recent").on("click", 'button', function() { 
    $(this).closest($("li")).find($(".content")).slideToggle(); 
    if ($(this).text() == "Show content") { 
     $(this).text("Hide content"); 
    } else { 
     $(this).text("Show content"); 
    } 
});