[英]If/else not working with event.target selector
我有三個按鈕。 單擊一個應該做一件事,單擊第二個應該做另一件事,依此類推。
當您單擊任何按鈕時,我在控制台中看到了相同的消息,但我不希望看到此消息。 我的if / else邏輯是否有問題,還是有其他因素影響結果?
$(document).on("click", ".dtAddClass-rolesgrid", disp._newRole);
$(document).on("click", ".dtAddClass-srchgrid", disp._newRole);
$(document).on("click", ".dtAddClass-additionalsrchgrid", disp._newRole);
_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)
}
在這里,嘗試這樣的事情。
$(document).on("click", ".dtAddClass-rolesgrid", onClick);
$(document).on("click", ".dtAddClass-srchgrid", onClick);
$(document).on("click", ".dtAddClass-additionalsrchgrid", onClick);
function onClick(e) {
const el = $(this);
if (el.hasClass('dtAddClass-rolesgrid')) {
console.log('this is rolesgrid')
} else if (el.hasClass('dtAddClass-srchgrid')) {
console.log('this is srchgrid');
} else if (el.hasClass('dtAddClass-additionalsrchgrid')) {
console.log('this is addtsrchgrid');
} else {
console.log('this is e: ' + this)
}
}
在jQuery click函數中,您使用$(this)
而不是e.target
獲得單擊的元素。 另外,使用jQuery方法hasClass
, tagName
是元素的標簽名稱,例如div
或span
。
或者使事情更簡單:
$('.dtAddClass-rolesgrid').click(function() { alert('this is rolesgrid') }) $('.dtAddClass-srchgrid').click(function() { alert('this is srchgrid') }) $('.dtAddClass-additionalsrchgrid').click(function() { alert('this is additionalsrchgrid') })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="dtAddClass-rolesgrid"> Rolesgrid </div> <div class="dtAddClass-srchgrid"> Srchgrid </div> <div class="dtAddClass-additionalsrchgrid"> Additionalsrchgrid </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.