jquery下拉图片帮助

时间:2011-03-27 21:30:31

标签: jquery

我有一个下拉国家/地区列表使用jquery和http://jsfiddle.net/josh3736/jf5QK/的内容但是在该演示中我从下拉列表中选择一个,它不会更改标志图像,它只是简单地更改了国家/地区名称?我试过玩它无济于事。

任何帮助?

3 个答案:

答案 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;
    });
});