10

複数の値を受け入れるように設定された選択ボックスがいくつかあります。jQueryを使用して最後に選択した値を取得できる方法はありますか? 私は以下を使用してみました:

var latest_value = $("option:selected",this).val();

そしてそれは何も返しませんでした。値の配列ではなく、最後に選択した値のみが必要です。

前もって感謝します

要求された HTML は次のとおりです。長すぎるため、リストを省略しました。

<select id="style-list" name="style-list[]" class="attrs" multiple="multiple">
    <option value="7">2 Pack</option>
    <option value="10">3 Pack</option>
    <option value="12">4 Pack</option>
</select>

次に、ページの上部に次のものがあります (8 個ありますが、複数選択ウィジェットの複数のインスタンスを使用していることがわかるように、いくつかを示しています。

$(document).ready(function(){

    $("#product-list").multiselect({
       selectedList: 4,
       noneSelectedText: "Product",
       minWidth: 190  
    }).multiselectfilter();

    $("#style-list").multiselect({
       selectedList: 4,
       noneSelectedText: "Style",
       minWidth: 190  
    }).multiselectfilter();


    $("#feature-list").multiselect({
       selectedList: 4,
       noneSelectedText: "Features",
       minWidth: 190  
    }).multiselectfilter();

});

そして、これを別のjsファイルに入れます:

$(function(){

    $(".attrs").on("multiselectclick", function(event, ui){

    var latest_value = $('option', this).filter(':selected:last').val(); 
    alert (latest_value);

    var view = $("#currentview").val();
    var page = 1;

    run_ajax(view,page);

    });

})

ありがとうございました

4

5 に答える 5

15

:lastセレクターを使用します。

var latest_value = $("option:selected:last",this).val();

コールバック関数のコンテキストでは、要素自体ではなく、要素内の要素を参照している可能性があるため、次のことを試してくださいthis<select>

var latest_value = 
$(this).closest('select').find('option').filter(':selected:last').val();

console.log(this);コールバック関数内で呼び出す価値がある場合もあります。これは、実際にどの要素を操作しているかを知るためです。

于 2012-05-04T22:36:33.213 に答える