我已经定义了自己的函数,如下所示:
jQuery.fn.createSelector = function(){
var element = $(this[0]);
// hide original selector
$(element).hide();
// create new selector
$(element).after('<table class="selectorReplacer"><tr><td class="td01"></td><td class="td02"><div></div></td><td class="td03"></td></tr></table>');
};
Run Code Online (Sandbox Code Playgroud)
然后我应用它,像这样:
$(".createSelector").createSelector();
Run Code Online (Sandbox Code Playgroud)
在我的HTML中,我有许多<div class="createSelector">div,但该函数仅应用于它们中的一个(代码中的第一个).
我该如何重写我的函数以将其应用于所有元素?
编辑:还有一个问题.
我需要添加更多元素,让我们这样说:
.after('<div id="div1">')
.after('<div id="div2">');
Run Code Online (Sandbox Code Playgroud)
问题是结果是相反的,所以插入后,HTML看起来像这样:
<div class="createSelector"></div>
<div id="div2">
<div id="div1">
Run Code Online (Sandbox Code Playgroud)
如何按照我在代码中编写的顺序插入它们?
插件内部this已经是一个jQuery对象,所以你不需要再次包装它,如下所示:
jQuery.fn.createSelector = function(){
return this.hide().after('<table class="selectorReplacer"><tr><td class="td01"></td><td class="td02"><div></div></td><td class="td03"></td></tr></table>');
};
Run Code Online (Sandbox Code Playgroud)
请注意,通过返回结果(在本例中仍然是相同的集合),它允许您在末尾链接其他jQuery函数,例如:
$(".createSelector").createSelector().fadeIn();
Run Code Online (Sandbox Code Playgroud)
为什么?当你做this[0]你从jQuery对象(说this),采取的第一个 DOM元素和包装是在一个新的jQuery对象.但是......你不希望这样,你想要所有匹配的元素,所以只需跳过这一步.
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |