如何绑定Jquery的点击函数
How to bind Jquery function to click?
我写了这个函数:
(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);
对于动态添加的元素,您需要事件委托。
$('staticParentSelector').on('click', '.foo', youfun);
事件代表团事件委托允许我们将单个事件侦听器附加到父元素,该元素将为所有匹配选择器中是否存在这些后代,或者是否已添加到未来。
相关文章:
- 执行ajax成功函数-jQUERY
- 函数jquery.html()不提供数据属性集值
- 将变量放入ajax函数JQuery
- 函数jquery的未定义返回
- 如何在嵌套函数jquery上保持变量的值不变
- 用我的函数jquery给出数据/参数
- Firefox在调用函数(jquery)时冻结
- 在传递节时触发一个函数 - jquery
- 循环执行数组函数jQuery
- 在函数中调用另一个函数JQuery
- 对象不是函数-Jquery/JavaScript
- TypeError:对象不是函数-jquery
- 获取函数jQuery设置的属性
- 从函数jquery获取更新的变量值
- 切换而不是悬停函数jQuery
- 函数jQuery.animation()运行了两次行,但不起作用
- 使用函数 jQuery 获取变量
- 自执行函数 jquery 与 JavaScript 的区别
- 从回调函数 -JQuery 获取返回值
- 一个接一个地执行函数 JQUERY