我刚刚创建了一个MVC 4应用程序,其中我有一个包含许多行的表。每行都处于“活动”或“非活动”状态。
如果记录处于活动状态,它会显示此按钮(如上图中第2行所示)。
<button
class="btn btn-xs active btn-primary"
data-HEI_ID = @item.HEI_ID
data-status = "true">Active
</button>
<button
class="btn btn-xs inactiveColor btn-default"
data-HEI_ID = @item.HEI_ID
data-status = "false">Inactive
</button>
如果它处于非活动状态,则显示此按钮(如上图第1行中所示):
<button
class="btn btn-xs btn-default"
data-HEI_ID = @item.HEI_ID
data-status = "true">Active
</button>
<button
class="btn btn-xs inactiveColor btn-primary active"
data-HEI_ID = @item.HEI_ID
data-status = "false">Inactive
</button>
这是jQuery函数:
$('.btn-toggle').click(function () {
$(this).find('.btn').toggleClass('active');
if ($(this).find('.btn-primary').size() > 0) {
$(this).find('.btn').toggleClass('btn-primary');
}
if ($(this).find('.btn-danger').size() > 0) {
$(this).find('.btn').toggleClass('btn-danger');
}
if ($(this).find('.btn-success').size() > 0) {
$(this).find('.btn').toggleClass('btn-success');
}
if ($(this).find('.btn-info').size() > 0) {
$(this).find('.btn').toggleClass('btn-info');
}
$(this).find('.btn').toggleClass('btn-default'); {
}
});
但是当我点击所选状态时,无论是活动状态还是非活动状态,它都会切换按钮。
如何使用jQuery来防止这种情况?
答案 0 :(得分:3)
您已为按钮的父元素绑定了点击处理程序,而不是将其绑定到按钮,除了其中包含类active
,因为这表示所选状态。
$('.btn.btn-xs').click(function () {
//return if clicked button have class active
if($(this).hasClass('active'))
return false;
var $parent = $(this).closest('.btn-toggle');
$parent.find('.btn').toggleClass('active');
if ($parent.find('.btn-primary').size() > 0) {
$parent.find('.btn').toggleClass('btn-primary');
}
if ($parent.find('.btn-danger').size() > 0) {
$parent.find('.btn').toggleClass('btn-danger');
}
if ($parent.find('.btn-success').size() > 0) {
$parent.find('.btn').toggleClass('btn-success');
}
if ($parent.find('.btn-info').size() > 0) {
$parent.find('.btn').toggleClass('btn-info');
}
$parent.find('.btn').toggleClass('btn-default'); {
}
});