I have selects in list items. onchange of select, if selected options value is empty, I would like to give the parent li element a “isnotselected” class, else if selected option’s value is not empty, I would like to give the parent li element a “isselected” class. How can I do this via jQuery?
<ul>
<li>
<select>
<option value="">Select Value</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
</li>
<li>
<select>
<option value="">Select Value</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
</li>
<li>
<select>
<option value="">Select Value</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
</li>
<li>
<select>
<option value="">Select Value</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
</li>
</ul>
A Don’t Repeat Yourself solution:
Demo: http://jsfiddle.net/B5Q7m/
Alternatively but in the same style, you can rely on the fact that
falseconverts to 0 and ‘true’ converts to 1, although theclassesdeclaration isn’t as descriptive:Note:
.parent()can be used in place of.closest('li'), but.closestis usually the safer option in case you decide to wrap the<select>s in another element later on.