.off()【イベントハンドラ解除】
メモ
- .on()【イベントハンドラ設定】で設定されたイベントハンドラを解除
- 下記の非推奨メソッドを統一
.unbind()【イベントハンドラ解除】 1.0 / 1.4.33.0
.undelegate()【イベントハンドラ解除 (セレクタ指定)】 1.4.2 / 1.4.3 / 1.63.0
.die()【イベントハンドラ解除 (動的要素対応)】 1.3 / 1.4.1 / 1.4.31.71.9 - .on( "イベント名", ...) の省略形 のイベントハンドラ解除でも使用
- 下記の非推奨メソッドを統一
- イベント名
( .on()【イベントハンドラ設定】のイベント名については、イベント名 参照 )- イベントタイプのみ (例:"click")
- イベントタイプ + 名前空間 (例:"click.name1")
- 名前空間のみ (例:".name2")
- 全て:パラメータ無し
構文
説明 | 構文 | 戻り値 | ||||
---|---|---|---|---|---|---|
イベントハンドラ解除 | .off( events [, selector ] [, handler ] ) 1.7 String events:イベント名 上記メモ (複数:スペース区切り) [ String selector ]:.on() で指定したセレクタ文字列 ("**":全て) [ handler ]:イベントハンドラ (false:.on() で false 指定したものを解除)
| jQuery | ||||
.off( events [, selector ] ) 1.7 PlainObject events:【キー】・【値】のオブジェクト 【キー】イベント名 上記メモ (複数:スペース区切り) 【値】イベントハンドラ [ String selector ]:.on() で指定したセレクタ文字列 ("**":全て) | jQuery | |||||
.off( event ) 1.7 Event event:イベントオブジェクト | jQuery | |||||
.off() 1.7 (全イベントハンドラ解除) | jQuery |
関連
- jQuery リファレンス メモ
- .on()【イベントハンドラ設定】1.7
- .one()【イベントハンドラ設定 (1回のみ実行)】1.1 / 1.7
- .bind()【イベントハンドラ設定】 1.0 / 1.4 / 1.4.33.0
- .unbind()【イベントハンドラ解除】 1.0 / 1.4.33.0
- .delegate()【イベントハンドラ設定 (セレクタ指定)】 1.4.2 / 1.4.33.0
- .undelegate()【イベントハンドラ解除 (セレクタ指定)】 1.4.2 / 1.4.3 / 1.63.0
- .live()【イベントハンドラ設定 (動的要素対応)】 1.3 / 1.4 / 1.4.31.71.9
- .die()【イベントハンドラ解除 (動的要素対応)】 1.3 / 1.4.1 / 1.4.31.71.9
- .trigger()【イベント実行 (ブラウザデフォルト処理あり)】1.0 / 1.3
- .triggerHandler()【イベント実行 (ブラウザデフォルト処理なし)】1.2 / 1.3
- event.stopImmediatePropagation()【イベント伝播即時抑止】 1.3
- event.stopPropagation()【親要素イベント伝播抑止】1.0
- event.preventDefault()【デフォルト処理抑止】1.0
- jQuery (英語)
例
イベント名
<style>
.className { float:left; width:100px; height:100px; margin:5px; border:1px black solid; padding:5px; word-wrap:break-word; }
#outputName { width:400px; height:100px; font-size:large; background-color:lightcyan; }
</style>
<div style="height:120px;">
<div id="idName1" class="className">[ idName1 ]</div>
<div id="idName2" class="className">[ idName2 ]</div>
<div id="idName3" class="className">[ idName3 ]</div>
<div id="idName4" class="className">[ idName4 ]</div>
<div id="idName5" class="className">[ idName5 ]</div>
</div>
<p><textarea id="outputName">【出力】</textarea></p>
<script>
function funcOnName($target, $output) {
$target.append("<br>click<br>dblclick")
.on( "click", function(event) { $output.val("[ " + this.id + " ]"); } )
.on( "click.nameA", function() { $output.val($output.val() + "\nclick.nameA"); } )
.on( "click.nameB", function() { $output.val($output.val() + "\nclick.nameB"); } )
.on( "click.nameC", function() { $output.val($output.val() + "\nclick.nameC"); } )
.on( "dblclick", function(event) { $output.val("[ " + this.id + " ]"); } )
.on( "dblclick.nameA", function() { $output.val($output.val() + "\ndblclick.nameA"); } )
.on( "dblclick.nameB", function() { $output.val($output.val() + "\ndblclick.nameB"); } )
.on( "dblclick.nameC", function() { $output.val($output.val() + "\ndblclick.nameC"); } );
}
var $outputName = $("#outputName");
// 解除無し
var $idName1 = $("#idName1");
funcOnName($idName1, $outputName);
$idName1.append("<br><br>解除無し");
// イベントタイプのみ 解除
var $idName2 = $("#idName2");
funcOnName($idName2, $outputName);
$idName2.off("click").append('<br><br>.off("click")');
$idName2.on( "click", function() { $outputName.val($outputName.val() + "\n( click )"); } )
// イベントタイプ + 名前空間 解除
var $idName3 = $("#idName3");
funcOnName($idName3, $outputName);
$idName3.off("click.nameB").append('<br><br>.off("click.nameB")');
// 名前空間のみ 解除
var $idName4 = $("#idName4");
funcOnName($idName4, $outputName);
$idName4.off(".nameA").append('<br><br>.off(".nameA")');
// 解除
var $idName5 = $("#idName5");
funcOnName($idName5, $outputName);
$idName5.off().append('<br><br>.off()');
$idName5.on( "click", function() { $outputName.val($outputName.val() + "\n( click )"); } )
$idName5.on( "dblclick", function() { $outputName.val($outputName.val() + "\n( dblclick )"); } )
</script>
[ idName1 ]
[ idName2 ]
[ idName3 ]
[ idName4 ]
[ idName5 ]
セレクタ指定・ハンドラ指定
<style>
.classSlctr { float:left; width:100px; height:100px; margin:5px; border:1px black solid; padding:5px; word-wrap:break-word; }
#outputSlctr { width:300px; height:100px; font-size:large; background-color:lightcyan; }
</style>
<div id="parentSlctr" style="height:120px;">
<div id="idSlctr1" class="classSlctr classA classB">[ idSlctr1 ]<br>classA<br>classB<br></div>
<div id="idSlctr2" class="classSlctr classB classC">[ idSlctr2 ]<br>classB<br>classC<br></div>
<div id="idSlctr3" class="classSlctr classC classD">[ idSlctr3 ]<br>classC<br>classD<br></div>
<div id="idSlctr4" class="classSlctr classD classE">[ idSlctr4 ]<br>classD<br>classE<br></div>
<div id="idSlctr5" class="classSlctr classE classF">[ idSlctr5 ]<br>classE<br>classF<br></div>
</div>
<p id="opeSlctr" style="border:1px black solid; padding:1px 5px;">【操作】</p>
<p><textarea id="outputSlctr">【出力】</textarea></p>
<script>
function funcInitSlctr($parent, $output) {
$parent
.on( "click", ".classA", function() { $output.val($output.val() + "\nclick .classA"); } )
.on( "click", ".classB", function() { $output.val($output.val() + "\nclick .classB"); } )
.on( "click", ".classC", function() { $output.val($output.val() + "\nclick .classC"); } )
.on( "click", ".classD", function() { $output.val($output.val() + "\nclick .classD"); } )
.on( "click", ".classE", funcClickE )
.on( "click", ".classF", function() { $output.val($output.val() + "\nclick .classF"); } )
.on( "dblclick", ".classA", function() { $output.val($output.val() + "\ndblclick .classA"); } )
.on( "dblclick", ".classB", function() { $output.val($output.val() + "\ndblclick .classB"); } )
.on( "dblclick", ".classC", function() { $output.val($output.val() + "\ndblclick .classC"); } )
.on( "dblclick", ".classD", function() { $output.val($output.val() + "\ndblclick .classD"); } )
.on( "dblclick", ".classE", function() { $output.val($output.val() + "\ndblclick .classE"); } )
.on( "dblclick", ".classF", function() { $output.val($output.val() + "\ndblclick .classF"); } );
}
function funcClickE() { $("#outputSlctr").val($("#outputSlctr").val() + "\nclick .classE"); }
function funcOnSlctr($target, $output) {
$target.append("<br>click<br>dblclick")
.on( "click", function(event) { $output.val("[ " + this.id + " ]"); } )
.on( "dblclick", function(event) { $output.val("[ " + this.id + " ]"); } );
}
var $parentSlctr = $("#parentSlctr");
var $outputSlctr = $("#outputSlctr");
var $opeSlctr = $("#opeSlctr");
funcInitSlctr($parentSlctr, $outputSlctr);
var $idSlctr1 = $("#idSlctr1");
funcOnSlctr($idSlctr1, $outputSlctr);
var $idSlctr2 = $("#idSlctr2");
funcOnSlctr($idSlctr2, $outputSlctr);
var $idSlctr3 = $("#idSlctr3");
funcOnSlctr($idSlctr3, $outputSlctr);
var $idSlctr4 = $("#idSlctr4");
funcOnSlctr($idSlctr4, $outputSlctr);
var $idSlctr5 = $("#idSlctr5");
funcOnSlctr($idSlctr5, $outputSlctr);
// セレクタ指定 (click)
$opeSlctr.append('<br>.off("click", ".classC")');
$parentSlctr.off("click", ".classC");
// セレクタ指定 (click dblclick)
$opeSlctr.append('<br>.off("click dblclick", ".classD")');
$parentSlctr.off("click dblclick", ".classD");
// ハンドラ指定
$opeSlctr.append('<br>.off("click", "funcClickE")');
$opeSlctr.append('<br>.off("dblclick", "funcClickE") 解除なし');
$parentSlctr.off("click", funcClickE);
$parentSlctr.off("dblclick", funcClickE); // 解除なし
</script>
[ idSlctr1 ]
classA
classB
classA
classB
[ idSlctr2 ]
classB
classC
classB
classC
[ idSlctr3 ]
classC
classD
classC
classD
[ idSlctr4 ]
classD
classE
classD
classE
[ idSlctr5 ]
classE
classF
classE
classF
【操作】
イベントオブジェクト
<style>
.classObject { float:left; width:100px; height:100px; margin:5px; border:1px black solid; padding:5px; word-wrap:break-word; }
#outputObject { width:200px; height:100px; font-size:large; background-color:lightcyan; }
</style>
<div style="height:120px;">
<div id="idObject1" class="classObject">[ idObject1 ]<br>click<br>dblclick</div>
</div>
<p><textarea id="outputObject">【出力】</textarea></p>
<script>
var $idObject1 = $("#idObject1");
$idObject1.on("click", function(event) {
$("#outputObject").html("[ " + this.id + " ]\nclick 初回のみ");
$(this).off(event);
});
$idObject1.on("click", function(event) {
$("#outputObject").val($("#outputObject").val() + "\n(click)");
});
$idObject1.on("dblclick", function() {
$("#outputObject").val("[ " + this.id + " ]\ndblclick");
});
</script>
[ idObject1 ]
click
dblclick
click
dblclick