这是非常基本的东西,但我找不到解决方案,从我找到的少数资源。我做错了什么?
$('#jquery-toggle').click(function () {
var buttontext = $('#jquery-toggle').text();
if ($(buttontext = 'Toggled')) {
($('#jquery-toggle').text('Not Toggled'));
} else {
($('#jquery-toggle').text('Toggled'));
}
});
提前致谢。
答案 0 :(得分:1)
主要问题是这一行:
if ($(buttontext = 'Toggled')) {
=
是作业,==
或===
是比较此外,条件内的.text()
函数周围有多余的括号。
$('#jquery-toggle')
可以更改为$(this)
,this
将指向调用事件处理程序的元素。
然后代码是:
$('#jquery-toggle').click(function () {
var buttontext = $(this).text();
if (buttontext === 'Toggled') {
$(this).text('Not Toggled');
} else {
$(this).text('Toggled');
}
});
答案 1 :(得分:1)
你的主要问题是单个等号,它是一个赋值运算符(为变量赋值),而不是比较运算符(检查两个元素是否相等),这就是你所追求的。
以下内容应该有效:
$('#jquery-toggle').click(function () {
var buttontext = $(this).text();
if (buttontext == 'Toggled') {
$(this).text('Not Toggled');
} else {
$(this).text('Toggled');
}
});
还请注意使用this
,这样可以节省id
搜索文档的计算量。
答案 2 :(得分:1)
您的if()
不应包含$()
,需要使用比较运算符,而不是 =
可以使用text(function)
$('#jquery-toggle').click(function () {
// "this" is the element
$(this).text(function(_, existingText){
return existingText === 'Toggled' ? 'Not Toggled' : 'Toggled';
});
});