jQuery文本随条件改变

时间:2017-04-17 17:55:58

标签: jquery

这是非常基本的东西,但我找不到解决方案,从我找到的少数资源。我做错了什么?

$('#jquery-toggle').click(function () {

    var buttontext = $('#jquery-toggle').text();

    if ($(buttontext = 'Toggled')) {
        ($('#jquery-toggle').text('Not Toggled'));
    } else {
        ($('#jquery-toggle').text('Toggled'));
    }
});

提前致谢。

3 个答案:

答案 0 :(得分:1)

主要问题是这一行:

if ($(buttontext = 'Toggled')) {
  • 您不能将变量包装到jquery对象中
  • =是作业,=====是比较

此外,条件内的.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';
    });    
});