0
我已经写了这个功能:如何绑定jquery函数来点击?
(function($){
$.fn.loaderHolder = function(action){
var loaderHolder = $(document.createElement('div'))
.addClass('loaderHolder'),
safeImage = $(document.createElement('img'))
.attr("src", "/static/images/icons/vault-bg.svg")
.addClass("safe"),
lockImage = $(document.createElement('img'))
.attr("src", "/static/images/icons/vault-lock.svg")
.addClass("lock"),
loader = loaderHolder.append(safeImage, lockImage);
return this.each(function(){
if(action === "add"){
$(this).append(loader);
} else if(action === "remove"){
$(this).children('.loaderHolder').remove();
};
});
};
}(jQuery));
这个函数生成或删除加载器。我可以像这样运行这个函数:$('.foo').loaderHolder('add');
。
但是,如果我想装载机添加到动态生成的元素,我需要写我的代码是这样的:
$('.holder').on('click', '.foo', function(){
$(this).loaderHolder('add');
});
我真的不喜欢匿名函数。有没有其他的方式来写这个没有匿名函数?
谢谢!
编辑:谢谢所有的答复。编辑我的代码是正确的,忘记了在动态生成的部分中使用父选择器。
但我只是想知道一个标记是这样的:
$('.holder').on('click', '.foo', {action: 'add'}, $(this).loaderHolder);
我知道这是不对的,但有什么办法把它做好这样的吗?或者你只需要匿名功能?代替匿名函数
$('.foo').on('click', youfun);
的动态添加元素
匿名函数的问题是什么? – Filype
@Filype写入额外的代码行 – Yang
这就是*假设*完成的方式! – Jamiec