実行されたら、イベントハンドラーのバインドを解除します。
$(function() {
$(".search_prompt").hide();
function show_search_prompt() {
$(".search_prompt").show();
$("#text").unbind("focusin", show_search_prompt);
}
function hide_search_prompt() {
$(".search_prompt").hide();
$("#text").unbind("focusout", show_search_prompt);
}
$("#text").bind("focusin", show_search_prompt);
$("#text").bind("focusout", hide_search_prompt);
});
実例
http://jsfiddle.net/bikeshedder/JqErw/
JQueryプラグイン
これが数回必要な場合は、このためのJQueryプラグインを作成できます。
$.fn.bindRunOnce = function(eventType, eventHandler) {
this.bind(eventType, function cb() {
$(this).unbind(eventType, cb);
eventHandler.apply(this, arguments);
});
};
$(function() {
$(".search_prompt").hide();
$("#text").bindRunOnce("focusin", function(ev) {
$(".search_prompt").show();
});
$("#text").bindRunOnce("focusout", function() {
$(".search_prompt").hide();
});
});
ライブデモ
http://jsfiddle.net/bikeshedder/JqErw/1/
one
...または、によって提案されたように使用できますsalexch
。
どうすればこれを見逃すことができますか?:-)