有人可以向我解释为什么这样做有效:
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);
});
即使是控制台日志也没有显示,所以他不喜欢该点击功能中的其他内容。
答案 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);
}
};