我有一个问题,我的下拉列表正在切换整个li
元素集。我只是想知道如何更改我的 jQuery 以定位父级的第一个子 ul,在本例中是span
我单击的元素。
有没有简单的方法来解决这个问题?我在下面附上了一个 JSFiddle,也不完全确定为什么 list 有一个巨大的左边距,但这似乎微不足道。
的HTML
<dl id="sample" class="dropdown">
<dt><a href="#"><span>COUNTRIES</span></a></dt>
<dd>
<ul>
<li><a href="#">Brazil<img class="flag" src="br.png" alt="" /><span class="value">BR</span></a></li>
<li><a href="#">France<img class="flag" src="fr.png" alt="" /><span class="value">FR</span></a></li>
<li><a href="#">Germany<img class="flag" src="de.png" alt="" /><span class="value">DE</span></a></li>
<li><a href="#">India<img class="flag" src="in.png" alt="" /><span class="value">IN</span></a></li>
</ul>
</dd>
<dt><a href="#"><span>PLANETS</span></a></dt>
<dd>
<ul>
<li><a href="#">EARTH<img class="flag" src="br.png" alt="" /><span class="value">BR</span></a></li>
<li><a href="#">SATURN<img class="flag" src="fr.png" alt="" /><span class="value">FR</span></a></li>
<li><a href="#">MARS<img class="flag" src="de.png" alt="" /><span class="value">MR</span></a></li>
<li><a href="#">PLUTO(JK)<img class="flag" src="in.png" alt="" /><span class="value">PL</span></a></li>
</ul>
</dd>
</dl>
<span id="result"></span>
jQuery
$(document).ready(function() {
$(".dropdown img.flag").addClass("flagvisibility");
$(".dropdown dt a").click(function() {
$(".dropdown dd ul").toggle();
});
$(".dropdown dd ul li a").click(function() {
var text = $(this).html();
$(".dropdown dt a span").html(text);
$(".dropdown dd ul").hide();
$("#result").html("Selected value is: " + getSelectedValue("sample"));
});
function getSelectedValue(id) {
return $("#" + id).find("dt a span.value").html();
}
$(document).bind('click', function(e) {
var $clicked = $(e.target);
if (! $clicked.parents().hasClass("dropdown"))
$(".dropdown dd ul").hide();
});
$("#flagSwitcher").click(function() {
$(".dropdown img.flag").toggleClass("flagvisibility");
});
});