javascript - Nested change event still happens when disabled -
i want categorycb_change function not executed when permissioncb_change in progress, not work.
in code below set firecategoryevents false when permissioncb_change executing, reason not prevent category_cb executing. when debug can see permissioncb_change done first , when done executing categorycb_change fired.
(important note: categorycb_change triggered within updategroupcheckboxes within permissioncb_change function.)
i tried unbinding , rebinding, same problem.
what doing wrong , or how can fix this?
.permissioncheckbox , .rolecategory both html input checkbox elements. code behind updategroupcheckboxes quite complicated. don't think useful show here. (it changes checkedstate of multiple .rolecategory checkboxes triggers categorycb_change events)
var firecategoryevents = true; $(function () { $('.permissioncheckbox').change(permissioncb_change, 0); $('.rolecategory').change(categorycb_change); }); function permissioncb_change() { firecategoryevents = false; $(this).attr('data-changed', true); if (firepermissionevents) { updategroupcheckboxes(this); } firecategoryevents = true; } function categorycb_change() { if (firecategoryevents) { alert('cat changed'); } } solution
i found solution:
function permissioncb_change() { $(this).attr('data-changed', true); if (arguments[0].originalevent.srcelement.classname != 'rolecategory') { updategroupcheckboxes(this); alert('per changed'); } } function categorycb_change() { if (arguments[0].originalevent.srcelement.classname != 'permissioncheckbox') { alert('cat changed'); } } this way check origin of event before deciding run code.
i updated question solution problem.
Comments
Post a Comment