方法调用一个函数
jQuery .on() method calling a function inmediatly
我不是JavaScript专家(远非如此),我只是对jQuery有一些肤浅的经验——没有什么太花哨的。我有以下代码:
// show search forms
searchButton = jQuery('#show-search');
searchForm = jQuery('#search-form');
function toggleSearch() {
searchButton.button('toggle');
searchForm.slideToggle(300, function() {
searchForm.find('#value').focus();
});
}
searchButton.on('click', toggleSearch());
当页面加载时,#search-form
实际上被激活并向下滑动,而不需要调用函数(即实际上单击按钮)。
根据这篇帖子,我可以通过这样的功能:
searchButton.on('click', toggleSearch);
它也会像我这样做:
searchButton.on('click', function() {
toggleSearch();
});
有效。两种方法都可以。
- 为什么这个有效,为什么我不能只使用第一种形式?(通过
toggleSearch()
) - 如果有一个名为toggleFunction的变量具有某个随机值,该怎么办?它不是被传递而不是函数吗
编辑:我知道这个很好的答案,但它没有解释"参考"部分,也没有解释以前分配的变量的情况。在这些情况下,是否需要命名函数?我应该每次都用吗?
使用toggleSearch()
时,实际上是在运行函数,函数的返回用作处理程序。如果省略括号,则传递对函数的引用,并且在事件发生时将调用函数本身。
在两个"工作"的函数的情况下,第一个是我所描述的。在第二个例子中,您将传递一个匿名函数引用作为处理程序。这个匿名函数在调用时运行该方法,而不是在定义时运行,因此其工作方式与只传递函数引用相同。如果您需要向函数传递参数,第二种方法就是这样做的方法。
searchButton.on('click', function() { // this is the handler
// this is run when the hander executes
toggleSearch( 'some parameter', 'some other parameter' );
});
()
使您执行函数,如果您使用toggleSearch()
,则将返回值(※,在您的情况下为undefined
)传递给.on
,而不是函数本身。
toggleFunction
是函数名,也是一个变量,与相同
var toggleFunction = function() {/*...*/};
因此,如果存在另一个名为toggleFunction
的变量,则toggleFunction
将发生更改。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟