Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Javascript jQuery插件不适用于应用于的所有元素_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript jQuery插件不适用于应用于的所有元素

Javascript jQuery插件不适用于应用于的所有元素,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,考虑以下jQuery插件代码: (function($){ $.fn.MyPluginMethod= function() { $(this).after('<span>Hello</span>'); }; })(jQuery); 它不会对存在的每个标签发出标题警告,只对第一次出现的标签发出警告 为什么会有这种行为? 谢谢这是因为您正在创建插件的一个实例,所以警报()只调用一次。第一个示例导致在每个a之后出现span元素的原因是after()jQuery

考虑以下jQuery插件代码:

(function($){
$.fn.MyPluginMethod= function() {
    $(this).after('<span>Hello</span>');
    };
})(jQuery);
它不会对存在的每个标签发出标题警告,只对第一次出现的标签发出警告

为什么会有这种行为?
谢谢

这是因为您正在创建插件的一个实例,所以
警报()
只调用一次。第一个示例导致在每个
a
之后出现
span
元素的原因是
after()
jQuery函数通过匹配的元素集循环

要使后一个示例按照您的需要工作,您需要手动循环:

(function($){
    $.fn.MyPluginMethod= function() {
        this.each(function() {
            title = $(this).attr('title');
            alert(title);
        });
    };
})(jQuery);

您可以使用
this.length

检查插件是否已在多个元素上实例化。这是因为您正在创建插件的一个实例,因此
alert()
只调用一次。第一个示例导致在每个
a
之后出现
span
元素的原因是
after()
jQuery函数通过匹配的元素集循环

要使后一个示例按照您的需要工作,您需要手动循环:

(function($){
    $.fn.MyPluginMethod= function() {
        this.each(function() {
            title = $(this).attr('title');
            alert(title);
        });
    };
})(jQuery);

您可以使用
this.length

检查插件是否已在多个元素上实例化,当您调用它时,它将发出
警报,
还可以使用
$。每个
调用多个元素,如

HTML

<div title="test">test</div>
<div title="test123">test123</div>


阅读

当你呼叫它时,它将发出警报
, 还可以使用
$。每个
调用多个元素,如

HTML

<div title="test">test</div>
<div title="test123">test123</div>


阅读

,但在第二个示例中,我使用$('a')选择器调用它,这一个是否也应该循环通过每个匹配的元素,并为每个元素发出警报?不,因为正如我提到的,您正在创建插件的一个实例。@user2653125 No-cause.attr()方法将只返回第一个匹配的element@RoryMcCrossan这已经引用了匹配的元素集,无需再次包装:
this.each()
@each,因此,“this”关键字并不指向每个特定元素,而是指向元素列表?但在第二个示例中,我使用$('a')选择器调用它,这一个是否也应该循环遍历每个匹配的元素,并为每个元素发出警报?否,因为正如我提到的,您正在创建插件的一个实例。@user2653125否,因为.attr()方法将只返回第一个匹配的元素element@RoryMcCrossan这已经是指匹配的元素集,无需再次包装:
this.each()
@each,那么,“this”关键字不是指向每个特定元素,而是指向元素列表?