javascript - Strange behaviour with jQuery pseudo selector :visible -
i have query looked this:
$("div.modal:visible select#dte_field_calculator\\.type") which attempt, in theory, find <select> tag inside of visible div.modal element.
unfortunately, return nothing @ all, despite dom looking expect (<div class="modal">...<select id="dte_field_calculator.type">...)
if removed :visible (div.modal ...) filter, finds target select tag.
if remove .modal (div:visible ...) class selector, again find correct select tag.
but when used in combination, receive empty array.
the way able solve problem implement performance tip on :visible documentation page, , change selector so:
$("div.modal").filter(":visible").find("select#dte_field_calculator\\.type") this sufficient, , of course more performant, little confused why selector not work in first place. see no reason why should behave in manner observed.
does know why :visible filter selector, in combination .modal class selector, somehow cause entire selection fail? missing obvious?
to explain 'bug', guess using invalid html markup, using duplicate ids.
to explain why 1 method fails while second works, aware, id selector returns first matched element.
this $("div.modal:visible select#dte_field_calculator\\.type") read right left, matching first element id , check if parent .modal visible.
this $("div.modal").filter(":visible").find("select#dte_field_calculator\\.type") searching elements class modal, filtering visible ones, looking element id dte_field_calculator.type.
that explain it. solution use class, not id.
Comments
Post a Comment