【问题标题】:Jquery focusout functionjQuery 聚焦功能
【发布时间】:2011-11-30 21:15:08
【问题描述】:

是否可以将元素传递给 Jquery 中的 focusout 函数?我想将所有文本框的焦点事件绑定在一个语句中。所以我的解决方案是让它们都是同一个类,然后做类似的事情

$(".class-name").focusout( function() {
//do whatever
});

但是我想在 focusout 中获取元素的值,而不必通过它的 id 来引用它,那么这样的事情可能吗?

$(".class-name").focusout( function(this) {
alert( $(this).val() );
});

【问题讨论】:

    标签: jquery jquery-focusout


    【解决方案1】:

    假设你意识到focusout 的神奇本质超过了blur,这就是你想要的:

    $("#the-common-parent-of-all-inputs").focusout( function(e) {
    alert( e.target.value );
    });
    

    您只需要将一个focusout 绑定到输入元素的公共父级。这是使用focusout 的唯一原因。

    您可能没有意识到,但是当您执行$(".class-name").focusout 时,它只会单独绑定到每个元素,这违背了focusout 的全部目的。

    【讨论】:

    • 我在 jquery.com 上读到了这个。 “这与模糊事件不同,它支持检测父元素失去焦点(换句话说,它支持事件冒泡)。”我不太确定父元素是什么。现在查找此内容
    • @sarsnake,就像这样:<form><input><input><input></form>。现在您只需将单个 focusout 绑定到 FORM,因为它是所有输入的公共父级。而不是 3 个模糊事件,每个输入一个。触发模糊的特定输入可通过e.target 获得。 this 将始终引用表单,因为它是事件绑定的对象。
    【解决方案2】:

    对于诸如 focusout(或任何其他 jQuery 事件)之类的事情,您可以这样做:

    $(".class-name").focusout( function() {
       //`this` refers to the object that was focusouted on
    });
    

    this 总是指事件发生的对象

    【讨论】:

    • this 将引用 .class-name 父级捕获冒泡事件的任何内容,而不是最初发生模糊事件的较低级别元素。只有在 .class-name 是发生模糊事件的元素本身的情况下。
    【解决方案3】:

    你试过了吗?它肯定可以工作,但没有(!)“this”参数。 "this" 将自动引用当前元素,无需将其作为参数传递给函数。直接省略即可。

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 2011-08-12
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多