2017-01-22 6 views

答えて

3

特定の委任イベントハンドラを削除するには、セレクタ文字列がイベントハンドラがアタッチされたときに.on()に渡されるセレクタ文字列と正確に一致する必要があるセレクタ引数を指定する必要があります。

この方法では、onchnageコールバックから$(this).off()を使用する必要はありません。また、イベントに名前空間を使用すると、望ましくないイベントをバインド解除しないようにします。

これを試してください。

//here the namespace name is set to 'selection' 
 
$(document).on('change.selection', 'select[name=url]', function() { 
 
    alert("Change event triggered"); 
 
}) 
 

 
$("button").click(function() { 
 
    $(document).off('change.selection', 'select[name=url]') 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="url"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 

 
<button>Unbind</button>

+0

に内側と外側のイベントのバインドを解除することができ、それを行う場合は、あまりにも、それはjQueryのの本当に便利な機能です、名前空間を使用するためにOPを提案する場合があります。) – Terry

+0

確かに。提案していただきありがとうございます。 – Piyush

+0

ありがとう!ちょうど私が望むように動作 –

0

イベントon('change')はない要素('select[name=url]')に文書にbinddedさbeacuseそれはあります。

要素選択ごとにイベントの変更を設定する場合は、共通のクラスを設定し、変更イベントをクラスにバインドすることをお勧めします。

あなたが変更イベント