有人可以告诉我如何在运行一次后停止这个javascript函数吗? 目前它只是一次又一次地重复,我只想让它运行一次。
我还在学习javascript,很抱歉,如果它不是很好。
感谢
<script>
$(function() {
$(".search_prompt").hide();
$("#text").focusin(function() {
$(".search_prompt").show();
}).focusout(function () {
$(".search_prompt").hide();
});
});
</script>
答案 0 :(得分:3)
<script>
$(function() {
$(".search_prompt").hide();
$("#text").one('focusin', function() {
$(".search_prompt").show();
}).one('focusout', function () {
$(".search_prompt").hide();
});
});
</script>
答案 1 :(得分: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插件:
$.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/
...或者您可以按照salexch
的建议使用one
。
我怎么能错过这个? : - )