我有一个下拉国家/地区列表使用jquery和http://jsfiddle.net/josh3736/jf5QK/的内容但是在该演示中我从下拉列表中选择一个,它不会更改标志图像,它只是简单地更改了国家/地区名称?我试过玩它无济于事。
任何帮助?
答案 0 :(得分:1)
国家/地区会更改,因为表单已过帐,并且在选择国家/地区时会重建下拉列表。 click事件似乎传播到发布表单的内容。 这可以通过向click函数添加e.preventDefault()来防止:
// when a language is clicked, make the selection and then hide the list
$(".dropdown dd ul li a").click(function(e) {
var clickedValue = $(this).parent().attr("class");
var clickedTitle = $(this).find("em").html();
$("#target dt").removeClass().addClass(clickedValue);
$("#target dt em").html(clickedTitle);
$languageList.hide();
$dropTrigger.removeAttr("class");
e.preventDefault();
});
我会尝试再研究一下,试图找出旗帜没有改变的原因。
编辑: 似乎有人在我面前发布了解决国旗问题的解决方案:P
无论如何,这是我提出的解决方案:
var clickedValue = $('em', this).attr("class");
答案 1 :(得分:1)
标志不会更改,因为您没有像.click()中那样获得标志图像的类。如果你改变你的click(),就像我在下面所做的那样,你将得到你想要的新名称和标志:
// when a language is clicked, make the selection and then hide the list
$(".dropdown dd ul li a").click(function() {
var clickedValue = $(this).find("em").attr("class");
var clickedTitle = $(this).find("em").html();
$("#target dt em").removeClass().addClass(clickedValue);
$("#target dt em").html(clickedTitle);
$languageList.hide();
$dropTrigger.removeAttr("class");
});
});
表单正在回发,导致重建所有内容,然后重置标志和国家/地区名称。
答案 2 :(得分:0)
老实说,我会投票支持其他工作,因为它们是很好的解决方案,但我认为你的代码不会出错 - 它是导致问题的点击后的回发。一个简单的回归虚假;应该停止。
// when a language is clicked, make the selection and then hide the list
$(".dropdown dd ul li a").click(function() {
var clickedValue = $(this).parent().attr("class");
var clickedTitle = $(this).find("em").html();
$("#target dt").removeClass().addClass(clickedValue);
$("#target dt em").html(clickedTitle);
$languageList.hide();
$dropTrigger.removeAttr("class");
return false;
});
});