jQuery Selectbox。仅触发一次

时间:2013-12-11 08:19:07

标签: jquery html

我有一个简单的选择框,在更改时会出现一个简单的多平面问题并显示结果。

问题是,一旦你选择了列表中的每个选项,当它点击两次相同的选项时它就不起作用。

$('select#price-list').change(function () {
    var length = $(this).find('option:selected').data("length");
    var price = $(this).find('option:selected').data("price");
    var total = price * length;
    $('#price-shared').html(price);
    $('#price-shared-total').html(total);
});



$(function () {
    $("#price-list").selectbox();
});

这是一个小提琴:http://jsfiddle.net/defonic/xc39V/

发现问题:原来它在插件本身内,

更改:

$(target).find("option[value='" + value + "']").attr("selected", TRUE);

致:

$(target).find("option[value='" + value + "']").prop("selected", TRUE);

3 个答案:

答案 0 :(得分:0)

如果你没有真正改变选择框中的选择,我很确定没有触发更改事件。如果你将功能连接到click事件,它应该工作。 因此,如果您将其更改为:

$('select#price-list').click(function () {...

我希望这会有所帮助。

答案 1 :(得分:0)

您的代码很好,但您使用的是错误的事件!更改仅在选择的值为CHANGING时触发。因此,如果您希望每次用户从select中选择任何内容(即使是相同的值)时触发事件,请使用click事件!

答案 2 :(得分:0)

$('select#price-list').on('change click',function () {
    var length = $(this).find('option:selected').data("length");
    var price = $(this).find('option:selected').data("price");
    var total = price * length;
    $('#price-shared').html(price);
    $('#price-shared-total').html(total);
});



$(function () {
    $("#price-list").selectbox();
});

这应该有效!