单击if语句不起作用

时间:2016-05-06 09:34:02

标签: javascript jquery

有人可以向我解释为什么这样做有效:

  function updateWellnessPrice() {
        $('#toggle_151, #toggle_170').click(function () {
            amount = '1.50';
            $('#toggle_153 input').attr('data-amount', amount);
            $('#toggle_153 span').html(amount);
        });

    $('#toggle_148, #toggle_149, #toggle_150, #toggle_167, #toggle_168, #toggle_169').click(function () {
        amount = '0';
        $('#toggle_153 input').attr('data-amount', amount);
        $('#toggle_153 span').html(amount);
    });
};

但是我不喜欢那些我想写得简短的代码。为什么下面的代码不起作用?

  $('#toggle_151, #toggle_170').click(function () {
        var $this = $(this);
        if($this.data('clicked') == true) {
            amount = '1.50';
        } else {
            console.log('check');
            amount = '0';
        }
        $('#toggle_153 input').attr('data-amount', amount);
        $('#toggle_153 span').html(amount);
    });

即使是控制台日志也没有显示,所以他不喜欢该点击功能中的其他内容。

2 个答案:

答案 0 :(得分:1)

不确定if条件是否在这里有任何意义

试试这个

$('#toggle_148, #toggle_149, #toggle_150, #toggle_167, #toggle_168, #toggle_169, #toggle_151, #toggle_170').click(function () {
    var currentId = $(this).attr( "id" );
    if( currentId == "toggle_151" || currentId == "toggle_170" ) 
    {
        amount = '1.50';
    } 
    else 
    {
        console.log('check');
        amount = '0';
    }
    $('#toggle_153 input').attr('data-amount', amount);
    $('#toggle_153 span').html(amount);
});

现在假设您要为所有ID编写单击处理程序。

答案 1 :(得分:0)

查看你的if语句

if($this.data('clicked') == true)

所以每次点击按钮都是真的,它永远不会转到else语句。相反,你可以尝试这个

function updateWellnessPrice() {
    $('#toggle_151, #toggle_170').click(function () {
        amount = '1.50';
        update(amount);
    });

    $('#toggle_148, #toggle_149, #toggle_150, #toggle_167, #toggle_168, #toggle_169').click(function () {
        amount = '0';
        update(amount);
    });

    function update(amount){
        $('#toggle_153 input').attr('data-amount', amount);
        $('#toggle_153 span').html(amount);
    }
};