在jQuery模式中绑定并触发一个事件
Bind and trigger an event in jQuery pattern
通常我将事件与jQuery绑定,然后立即调用它,例如当我设置某些元素的定位或可见性时等等。
$('#myElement').on('click', function () {
$('#myOtherElement').css('color', 'red');
}).click();
这是可行的,但模式有点难看,尤其是当我的第一个选择器找到多个元素时。然后,该事件被触发多次,第一个选择器找到的每个元素都触发一次。我最终这样做:
$('.lots-of-elements').on('click', function () {
$('#myOtherElement').css('color', 'red');
}).first().click();
同样,这是有效的,但它不是我的最爱。有更好的模式可以使用吗?
我知道我可以做一些类似的事情:
function onClick() {
$('#myOtherElement').css('color', 'red');
};
$('.lots-of-elements').on('click', onClick);
onClick();
但这更为冗长。
我不明白为什么要使用单击事件,然后立即单击它。你就不能把css编辑放在主作用域里吗?
对于您的问题,您还可以创建一个jQuery函数,如下所示:
$.fn.extend({
clickColor: function(element, color) {
$(this).on('click', function() {
$(element).css('color', color);
});
return $(this);
}
});
把它放在一个单独的文件中,只使用保持主文件的清洁
$('#clicker').clickColor('#other', 'red').click();
$('.clicker').clickColor('.another', '#00FF00').first().click();
请查看演示。
当然,如果你喜欢的话,你也可以把.first()
和.click()
放在函数里。
然后看看这个DEMO 2
相关文章:
- 使用类从一个标记中双击事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 导航到特定事件的另一个变量页面
- 来自文档或下一个静态父级的事件委派
- 在创建对象后附加一个jquery事件
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 如何在所有ng点击事件AngularJS上启动一个方法
- 是否<asp:文本框>有一个onFocusLost事件
- React应用程序:道具在下一个事件后更新
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 全局屏幕span onclick触发一个事件javascript
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 添加一个javascript函数来下载elfinder上的事件
- jQuery触发器事件在一个循环中多次出现
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 是否可以同时为一个元素的所有事件指定阻止默认值
- angularjs调用事件中控制器的一个函数