【发布时间】:2019-07-26 14:36:39
【问题描述】:
我有三个按钮。点击一个应该做一件事,点击第二个应该做另一件事,等等。
当您单击任何按钮时,我会在控制台中看到相同的消息,这是我不想要的。我的 if/else 逻辑是否有问题或是否有其他因素影响结果?
index.js:
$(document).on("click", ".dtAddClass-rolesgrid", disp._newRole);
$(document).on("click", ".dtAddClass-srchgrid", disp._newRole);
$(document).on("click", ".dtAddClass-additionalsrchgrid", disp._newRole);
JS sn-p:
_newRole(e) {
$("#dialog-form fieldset > #activate-button").hide();
$("#dialog-form fieldset > #deactivate-button").hide();
dialog.dialog({ title: "Add New Search/Role Filled" });
dialog.dialog("open");
if ($(e.target.tagName === ".dtAddClass-rolesgrid")) {
myClass._AddNewRoleFilled();
console.log('this is rolesgrid') // clicking on any of the buttons only shows this message
} else if ($(e.target.tagName === ".dtAddClass-srchgrid")) {
console.log('this is srchgrid');
} else if ($(e.target.tagName === ".dtAddClass-additionalsrchgrid")) {
console.log('this is addtsrchgrid');
} else {
console.log('this is e: ' + e)
}
}
按钮是如何创建的:
let _gridNew = _grid.substring(1);
var table = $(_grid).DataTable({
buttons: [
{
text: '<i class="fa fa-plus"></i>',
titleAttr: 'Add',
className: 'dtAddClass-' + _gridNew
},
更新代码:
if ($('div').hasClass("dtAddClass-rolesgrid")) {
myClass._AddNewRoleFilled();
console.log('this is rolesgrid');
} else if ($('div').hasClass("dtAddClass-srchgrid")) {
console.log('this is srchgrid');
} else if ($('div').hasClass("dtAddClass-additionalsrchgrid")) {
console.log('this is addtsrchgrid');
} else {
console.log('this is e: ' + e)
}
【问题讨论】:
-
e.target.tagName在您的每个按钮的_newRole函数中的计算结果是什么? -
那些是类选择器。它们作为标签名称是无效的。
-
('div').hasClass("dtAddClass-rolesgrid")正在选择所有 div 并检查第一个.... -
@epascarello 所以一旦它检查了
-rolesgrid,它不会继续检查其他人吗? -
应该是
$(e.target).hasClass().... 除非你真的想要任何 div
标签: javascript jquery if-statement events methods