Javascript jQuery插件不适用于应用于的所有元素
考虑以下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
(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”关键字不是指向每个特定元素,而是指向元素列表?