Прочетох няколко статии, свързани с event.stopPropagation();
, но нито едно от предоставените решения не работи за мен. По принцип това, което имам, е джаджа за акордеон с всички елементи, свити по подразбиране. На всеки заглавен елемент (dt таг) също има квадратче за отметка. Щракването върху квадратчето за отметка не трябва да задейства акордеона, за да разшири елементите си.
<dt data-toggle="collapse">
<span class="subscribe-checkbox"><button type="button" class="btn toggle-btn" data-toggle="button"></button></span>
</dt>
<dd>
<p>Accordion content...</p>
</dd>
Щракването върху обхвата (което трябва да действа като квадратче за отметка) трябва да добави отметнат клас към него. Но също така разширява елемента на акордеона (таг dd). Това, което правя в jQuery е:
$('.accordion-group .btn.toggle-btn').click(function (event) {
event.stopPropagation();
});
Въпреки че съдържанието на акордеона не се показва (което е добре), елементът <span>
също не променя класа, така че не става „маркиран“. Опитах и с .live()
и също не се получи.