0

一度実行した後にこのJavaScript関数を停止する方法を教えてください。現時点では、何度も繰り返すだけで、一度だけ実行したいだけです。

私はまだjavascriptを学んでいるので、うまくいかなかったらごめんなさい。

ありがとう

<script>
$(function() {
    $(".search_prompt").hide();

    $("#text").focusin(function() {
        $(".search_prompt").show();
    }).focusout(function () {
        $(".search_prompt").hide();
    });
});
</script>
4

2 に答える 2

3
<script>
$(function() {
    $(".search_prompt").hide();

    $("#text").one('focusin', function() {
        $(".search_prompt").show();
    }).one('focusout', function () {
        $(".search_prompt").hide();
    });
});
</script>

http://api.jquery.com/one/

于 2013-02-03T13:48:55.930 に答える
0

実行されたら、イベントハンドラーのバインドを解除します。

$(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

どうすればこれを見逃すことができますか?:-)

于 2013-02-03T13:49:37.200 に答える