2

ページに複数の選択がある場合、等しいオプション値の選択を無効にする優れたjQuery関数を使用しています。問題は、それがどのように行われているのかわからないことです。

JSFiddle リンク: http://jsfiddle.net/Z2yaG/4/

jQuery 関数は次のようになります。

var prev = -1;
$("select").change(function () {
    if ($(this).val() > -1) {
            $("select").not(this).find("option[value=" + $(this).val() + "]").attr('disabled', 'disabled');
            $("select").not(this).find("option[value=" + previous + "]").removeAttr('disabled');}
    else {
             $("select").not(this).find("option[value=" + previous + "]").removeAttr('disabled');
         }
     }).focus(function () {
previous = $(this).val();
});

これはどのように機能しますか????

4

1 に答える 1

3
var previous = -1;
// Setting a previously selected value
$("select").change(function () {
// When any select element is changed
    if ($(this).val() > -1) {
    // When value is > -1
        // Get all selects but not the current one which triggered the change event
        $("select").not(this)
           .find("option[value=" + $(this).val() + "]").attr('disabled', 'disabled');
        // set the current option value to disabled

         // Get all selects but not the current one which triggered the change event
        $("select").not(this)
            .find("option[value=" + previous + "]").removeAttr('disabled');
        // Remove the disabled property on previous value
    } else {
        // Get all selects but not the current one which triggered the change event
        $("select").not(this)
            .find("option[value=" + previous + "]").removeAttr('disabled');
        // Remove the disabled property
    }
}).focus(function () {
    previous = $(this).val();
    // store the current value of the select to previous 
});
于 2013-06-18T23:18:26.467 に答える