【问题标题】:Save jQuery callback functions in a separate file将 jQuery 回调函数保存在单独的文件中
【发布时间】:2010-06-08 02:55:52
【问题描述】:

可能我错过了什么,但可以说我有这个:

$('a.delete').click(function(){
   resp=window.confirm("Are you sure you want to delete this?");
   if(resp)
       return true;
   else
       return false;
}

现在,我想将该回调函数保存到一个单独的 js 文件中,因为我将在多个页面中使用它。我的逻辑告诉我这样做:

$('a.del').click(delete_element());

我的 js 文件是这样的:

function delete_element(){
   resp=window.confirm("Are you sure you want to delete this?");
   if(resp)
       return true;
   else
       return false;
}

这不起作用。每次我的页面加载时,它都会显示确认窗口,即使我没有点击链接。

很明显,这次我的逻辑失败了。我错过了什么?

【问题讨论】:

  • 风格点:你可以这样做:return confirm('...');

标签: javascript jquery file callback


【解决方案1】:

$('a.del').click(delete_element());

即调用函数 delete_element() 并希望返回一个函数。

$('a.del').click(delete_element);

那(注意缺少的 ())会将点击处理程序设置为 delete_element。

【讨论】:

  • 完美。比我想象的要容易。非常感谢。
【解决方案2】:

试试;

$('a.delete').click(function(){
  delete_element()
}

编辑

我会将要删除的元素的引用传递给 delete_element 函数并从那里删除它,因为函数的名称是 delete_element 而不是 ask_to_delete_element。

【讨论】:

  • +1,将函数包装在匿名函数中,因为它没有包装在函数中,JavaScript引擎可能会在函数不存在的时候对其进行解析,方法是将其包装在引擎的函数中只会在点击时解析函数。女巫会在您的页面完全加载时出现
  • 它可以工作,但是它不会将结果传递给父函数。我可能不得不获取 delete_element() 的结果并相应地向父级返回 true 或 false。
  • 将 htat 切换为“return delete_element()”将修复真/假问题。
【解决方案3】:

怎么样

function deleteElement() {
   return window.confirm("Are you sure you want to delete this?");
}

$('a.delete').click(deleteElement);

或者,如果这是您网页的标准行为:

$('a.delete').live('click', function() {
   return window.confirm("Are you sure you want to delete this?");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多