Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在没有事件处理程序的情况下使用document.on_Jquery - Fatal编程技术网

Jquery 在没有事件处理程序的情况下使用document.on

Jquery 在没有事件处理程序的情况下使用document.on,jquery,Jquery,我现在已经多次遇到这种情况,我希望使用document.on()来操作元素,但我不知道如何在没有事件的情况下使用.on() 我经常使用ajax将元素注入DOM,并且经常需要使用document.on()绑定到这些注入的元素。当我希望选择一个元素并获取其信息时,这种方法非常有效 例如,要通过单击事件附加到选择器,可以写入: $(document).on('click', '.mledit', function(event) { alert($(this).val()); } 但是,如果我

我现在已经多次遇到这种情况,我希望使用document.on()来操作元素,但我不知道如何在没有事件的情况下使用.on()

我经常使用ajax将元素注入DOM,并且经常需要使用document.on()绑定到这些注入的元素。当我希望选择一个元素并获取其信息时,这种方法非常有效

例如,要通过单击事件附加到选择器,可以写入:

$(document).on('click', '.mledit', function(event) {
    alert($(this).val());
}
但是,如果我希望将焦点设置为该元素,该怎么办?我该怎么做?我试过:

$(document).on('focus', '.mledit');
我不知道还能尝试什么


我之所以需要这样做是因为目前(我以前也在这里),标准的
$('.mledit').focus()不工作。其他一切似乎都很好,但那一条指令却不行。因此,我想知道在这种情况下是否可以使用document.on()。

当您想要设置焦点时。。尽管如此,如果您有多个,您必须使用.eq()或[]指定要将焦点设置为哪一个

jQuery还提供了一种方法,让您在事件中传递以触发以下事件:

$('.mledit')[0].focus();

您将使用触发器而不是on

$(SELECTOR).trigger(EVENT_TYPE);

每当需要在与“选择器”匹配的元素上触发事件“foo”时,请使用以下语法:

$('selector').trigger("foo");
就你而言:

$('.mledit').trigger("focus");
用于绑定事件,您要寻找的是一种在元素上创建事件的方法

比如说

$('.mledit').trigger('focus');
同时,jQuery还具有一些方便快捷的功能,根据调用方式,这些功能将委托给.on或.trigger

例如,您还可以使用该方法触发焦点

$('.mledit').focus()
在引擎盖下,它实际上只是委托给
触发器
方法,但是如果要传入函数,它会将该函数绑定到传入的
选择器

刚刚看到你的编辑

我不确定为什么在使用use
$('.mledit').focus()时焦点事件不起作用,但我怀疑这是因为您匹配了不止一个元素,并且只能将焦点放在一个元素上。为了解释当您使用jQuery选择器时,返回的是jQuery对象,当您在这个返回的jQuery对象上调用方法时,实际上是在所有匹配的元素上调用它

作为访问匹配元素数组的第一个元素的快捷方式,您将经常看到

$('#someSelecter')[0]
因此,在您的情况下,仅在一个(以及第一个匹配的)元素上显式触发焦点事件

你可以用

$($('.mledit')[0]).focus() r

双重包装的原因是因为
[0]
返回一个常规的
DOM
元素,该元素上没有jQuery方法(包装创建了一个jQuery对象)。

您知道自己的东西。谢谢你,西蒙。@gibberish什么有用?您是在询问有关
[0]
的问题吗?如果是,则基本上当您在jQuery中使用选择器时,它会返回一个匹配元素的数组,
[0]
只是说使用第一个匹配的元素。@可以聚焦的乱七八糟的元素(例如
元素)为此提供了一个内置的
.focus()
方法。因此,您可以使用jQuery查找所有具有
“mledit”
类的元素,接下来
[0]
将为您提供对第一个此类元素的引用(如果有多个此类元素,则尝试将所有这些元素都集中起来是行不通的),然后您只需对该元素调用
.focus()
。非常感谢您的精彩解释+1用于发动机罩下信息。
$($('.mledit')[0]).focus() r