I have select tag in title of accordion like below
JavaScript
x
12
12
1
<div class="panel">
2
<div class="panel-heading" id="scripset3mainheading0" role="tab">
3
<a class="panel-title finalscripsetting" data-id="NF" data-parent="#scripsetp3accordion" data-toggle="collapse" href="#scripset3mainpart0" aria-controls="scripset3mainpart0" aria-expanded="true">
4
<select class="subseltitle">
5
<option selected="">1</option>
6
<option>2</option>
7
<option>3</option>
8
</select>Title</a>
9
</div>
10
<div class="max100 panel-collapse collapse show" id="scripset3mainpart0" aria-labelledby="scripset3mainheading0" role="tabpanel" style="">content</div>
11
</div>
12
When I click select tag , I dont want the accordion to open , I tried stopPropagation but selectbox is opening and closing immediately
JavaScript
1
8
1
$(document).on('click','.subseltitle',function(e){
2
e.stopPropagation();
3
if (!$(e.target).is("select")) {
4
e.preventDefault();
5
}
6
7
});
8
Advertisement
Answer
You can achieve that by setting pointer-events
to none
with css.
JavaScript
1
5
1
let controller = document.querySelector('#controller');
2
controller.addEventListener('click', (e) => {
3
document.querySelector('.subseltitle')
4
.classList.toggle('disabled-select', controller.checked);
5
});
JavaScript
1
3
1
.disabled-select {
2
pointer-events: none;
3
}
JavaScript
1
11
11
1
<a>
2
<select class="subseltitle">
3
<option selected="">1</option>
4
<option>2</option>
5
<option>3</option>
6
</select>
7
Title
8
</a>
9
<br/>
10
<input id="controller" type="checkbox"/>
11
<label for="controller">Disable Default behaviour</label>
If you want to catch onclick events add a parent container with display:contents
and use it to instead of using the select tag directly.