如何通过属性“onclick”将jQuery函数.one()应用于元素

How to apply jQuery function .one() to element through attribute 'onclick'

本文关键字:one 函数 元素 应用于 jQuery 属性 何通过 onclick      更新时间:2023-09-26

我想在单击输入字段时清除输入字段,但仅在第一次单击时清除输入字段。使用 jQuery,你可以像这样实现它:将以下代码片段放在文档中的任何位置(假设 id= inputf 的元素已经加载(:

$('#inputf').one("click", function() {
    $(this).val("");
});

如上面的代码片段所示,输入字段必须具有值为 inputfid 属性。
但是有没有办法将该代码段移动到输入字段的 onclick 属性,例如

<input type="text" onclick="$(this)....val('')" />

?看起来我不能使用函数.one(),因为该函数需要一个包含一个或多个 JavaScript 事件类型的字符串。但我只希望每次调用.one()时都执行它,而不指定一个或多个事件类型。

自从您要求以来,我才发布此内容,我不提倡内联处理程序。

<input type="text" onclick="this.onclick = null; this.value = ''; " />

http://jsfiddle.net/aUmNK/

<input type="text" onclick="if(flagCount === 0){this.value='';flagCount++;}" />

var flagCount = 0声明为 headscript 标记中的全局变量。

如果要对所有文本输入字段执行此操作,可以执行以下操作:

$("input[type=text]").each(function(){
    $(this).one("click", function() {$(this).val = "";});
});

。或者,您可以优化选择器以获取特定div中的每个输入字段,例如:

$("#divId input[type=text]")

你不需要jQuery来执行像one这样的事件。只需执行以下操作:

<input onclick="function(event) { /* do something */ this.onclick = function(){}; }" />

您的函数将仅在第一次执行,然后将一个新的 void 函数附加到 onclick 事件回调。

你可以编写自己的简单jQuery插件:

(function( $ ) {
  $.fn.clearOnce = function() {
  this.one("click", function() {
    $(this).val("");
  });
  };
})( jQuery );

在此之后,您可以:

<input type="text" onclick="$(this).clearOnce();" />

在 3 分钟内写完,未经测试;-(