2013-10-10 2 views
2

Я хотел бы определить событие, когда опция выбрана из выбранного элемента. Так, например, если мой HTML является:jQuery Опция De-Select Event?

<select id="select_box"> 
    <option value="1">Hot</option> 
    <option value="2">Cold</option> 
    <option value="3">Just Right</option> 
</select> 

И второй вариант будет выбран (value="2"), а затем пользователь де-выбирает его, нажав на другой вариант (например, как value="3") или нажав ту же опцию снова , как определить это событие с помощью jQuery? Моя цель - отключить функцию, когда это произойдет.

Я попытался следующие:

$("#select_box option:selected").change(function() { 
    console.log($(this).val()); 
}); 

Но это не сработало.

+0

Документации specifiies JQuery, что вы должны использовать его на самом выберите элемент (http://api.jquery.com/change/) –

ответ

3

change событие должно пойти на самой select элемента:

$("#select_box").change(function() { 
    console.log($(this).val()); 
}); 

пожаров Это событие, когда значение выбор будет изменен и будет соответствовать требуемому поведению.


Я хочу, значение параметра, который был снят с выбранным.

В этом случае вам нужно будет хранить предыдущее значение, когда он выбран, что-то вроде этого:

$("#select_box").change(function() { 
    var $select = $(this), 
     currentValue = $select.val(), 
     oldValue = $select.data('previous-value'); 

    // do stuff... 

    $select.data('previous-value', currentValue); 
}); 
+0

Спасибо, Рори. Дело в том, что я хочу, чтобы значение параметра было отменено. Я думаю, что то, что вы написали, даст мне значение только что выбранного варианта. – GChorn

+0

@GChorn не проблема, см. Мое обновление. –

+0

Еще раз спасибо! Это очень полезно. Единственное, что я не могу понять, это установить «oldValue», когда в '$ select.data()' нет значения '' previous-value'' (т. Е. Когда пользователь нажимает внутри элемента select в первый раз). Есть ли что-нибудь вроде метода 'dict.get (key, default = None)' Python? – GChorn

0

Я хотел бы включить элемент, когда параметр выбран с использованием метода связывания one() событий

+0

Спасибо за ваш ответ. Однако после прочтения документов по методу привязки 'one()' мне не ясно, как применить его к моей ситуации. – GChorn

+0

Решение Nevermind, Rory намного лучше, чем event bind messing. – Edorka

0

событие изменения будут уволены только тогда, когда изменяется значение, которое требуется вам

 $("#select_box").change(function() { 
      console.log(this.value); 
     }); 
0

Вы можете сделать это вручную некоторые вещи, как показано ниже код я данный,

var xSelectedOption = 0; 

$("#select_box").change(function() { 

    if(xSelectedOption != $(this).val()) 
    { 
     xSelectedOption = $(this).val(); 

     console.log("Option was changed!"); 
    } 

}); 
1

Ну, так я бы справился с этим с помощью прослушивателя событий.

$("#select_box").on('change', function(e){ 
    var $t = $(this), data = $t.data('last') || {optText:'none', val:'none'}; 
    $t.next().text('last was ['+data.optText+'] and its value is "'+data.val+'"').end() 
     .data('last', {optText:$t.children('[value="'+$t.val()+'"]').text(), val:$t.val()}); 
}); 

Fiddle HERE