jQuery .on() syntax and event.preventDefault()
jQuery .on() syntax and event.preventDefault()
假设我有一行代码:
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel);
指向函数:
function toggleComparisonPanel() {
event.preventDefault();
$(this).addClass('active').siblings().removeClass('active');
$quickSpecsTable.toggleClass('comparison-mode');
$filters.toggle();
}
这在 Chrome 中有效,因为显然它将事件附加到窗口,使其成为我所理解的全局。但是,Firefox 要求将事件传递给函数。我试过这个没有成功:
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event);
function toggleComparisonPanel(event) {
event.preventDefault();
$(this).addClass('active').siblings().removeClass('active');
$quickSpecsTable.toggleClass('comparison-mode');
$filters.toggle();
}
这样的事情是否可能,或者我的唯一选择是将代码放入 .on(( 函数中的匿名函数中,类似于以下代码?
$comparePanel.on('click', '.pills li:not(.active)', function(event){
event.preventDefault();
$(this).addClass('active').siblings().removeClass('active');
$quickSpecsTable.toggleClass('comparison-mode');
$filters.toggle();
});
如果可能的话,我宁愿将事件处理程序和函数分开。老实说,除了对我来说感觉更整洁之外,可能没有太多原因,但这样做会很好
您可以简单地在其他地方声明函数,如下所示:
// declare event here, since you're using it here
function toggleComparisonPanel(event) {
event.preventDefault();
$(this).addClass('active').siblings().removeClass('active');
$quickSpecsTable.toggleClass('comparison-mode');
$filters.toggle();
}
// just pass the function here
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel);
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event);
存在明显的语法错误(缺少"("(。 将其固定到
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel(event));
将附加toggleComparisonPanel(undefined)
的结果(假设此时没有可见event
变量(。
你想成功
$comparePanel.on('click', '.pills li:not(.active)', toggleComparisonPanel);
function toggleComparisonPanel(event) {
...
}
相关文章:
- event.preventDefault阻止ajax调用
- event.preventDefault() 不会在 jQuery Mobile 中取消链接方向
- 如果存在event.preventDefault函数,则ajaxForm不起作用
- event.preventDefault在表单选择中不起作用
- event.preventdefault 在 Firefox 中不起作用
- RxJS:我如何 event.preventDefault() 一个丢弃事件
- javascript event.preventdefault() 在 jquery.click with Rails
- 如何重置表单提交事件的 event.preventDefault()
- event.preventDefault() in firefox
- jquery .click() event.preventDefault() 不起作用
- 访问定位点属性和 event.preventDefault()
- $.ajax 发送两次,event.preventDefault 不可用
- 在 event.preventDefault() 之后重新启用按钮默认值
- 允许在启用 event.preventDefault 时使用 touchstart 进行垂直滚动
- event.preventDefault() 在移动设备上不起作用
- ibooks中的event.preventDefault():谁能解释为什么这不起作用
- event.preventDefault();仅在某些时候使用提交表单
- event.preventDefault();停止在FF工作
- event.preventDefault();在 AJAX 中不起作用
- fadeOut() 方法不适用于 event.preventdefault()