Jquery 使用参数调用用户定义函数
我正在定义函数func1(); 我要带一些情人 然后我想稍后在文档中这样称呼它:Jquery 使用参数调用用户定义函数,jquery,function,Jquery,Function,我正在定义函数func1(); 我要带一些情人 然后我想稍后在文档中这样称呼它: $('#some_id').click(func1($this)); $('#some_id').click(func1(param1, param2)); 但它不起作用 我一直在处理它有一段时间了,但至少对我来说jquery/javascript处理用户定义函数的方式非常奇怪。有人能给我提供一个简单的代码片段吗?Thx应该是 function func1(aaa, bbb) { ... } 下面是一个简单
$('#some_id').click(func1($this));
$('#some_id').click(func1(param1, param2));
但它不起作用
我一直在处理它有一段时间了,但至少对我来说jquery/javascript处理用户定义函数的方式非常奇怪。有人能给我提供一个简单的代码片段吗?Thx应该是
function func1(aaa, bbb) { ... }
下面是一个简单的例子: 确保使用
函数定义函数。然后,当您想从jQuery中调用它时
点击我!
选这个!
功能func1(aaa、bbb)
{
警报('您单击的DIV显示:“+aaa.innerHTML+”和“+bbb”);
};
$('div')。单击(函数()
{
func1(这个“没关系”);
});
如果您只想传递$(this)
,则不需要该参数,因为它将在定义的函数中可用
$('#some_id').click(func1);
但是,不能像这样添加参数:
$('#some_id').click(func1($this));
$('#some_id').click(func1(param1, param2));
然后,对于函数定义,您只需要
function func1() { }
如果您想要的参数不是$(this),则需要执行以下操作:
$('#some_id').click(function () {
func1(aaa, bbb); });
你不能像$('some#u id')那样做。单击(func1($this))代码>因为。单击(处理程序(事件对象))
定义。。。如果您这样调用它,func1($this)
中的$this
应作为eventObject
为此,您可以使用和
例如
function sum(event) {
alert(event.data.x + event.data.y);
// `this` here would refer to the element calling this function
// for example, $(this).attr('id') would return `someID` if called below
}
称之为
$('#someID').bind('click',{x:4, y:5}, sum);
我假设您正在尝试确保此
仍然引用接收事件的元素
试试看:
编辑:
如果您只想引用单击的元素,那么请参见@phoffer的第一个解决方案。在Javascript中,不能同时分配函数和传递参数。使用匿名函数
$('#some_id').click(function() {
var arg1 = $(this);
var arg2 = 'whatever';
return func1(arg1, arg2);
});
如果您需要的唯一参数是此
,请指定函数引用
$('#some_id').click(func1);
当你在这里的时候,请不要忘记接受正确的答案。。干杯:)请参阅:this
的值在您这样调用func1
时不会引用该元素。@patrick,我希望您不是指$(“#某些id”)。单击(func1)代码>原因是…@Reigel-我应该更清楚。当我说“像那样调用func1
时”,我的意思是在上一个示例中从匿名函数内部调用它。我认为第一个例子是传递func1
。它确实有效,我正在我的一个项目中使用它。请尝试放置名称、类、id等属性,然后尝试通过$(this.attr('name')
在函数中访问它,我保证它会工作。编辑:我明白你的答案是什么意思。我不认为我们中的任何人都确切地知道海报想要做什么,但我打赌他想传递元素属性,因为实际上没有什么东西可以传递,因为他可以直接访问变量。很清楚,这个
不会指代上一个示例中接收事件的元素。首先会的。我不知道返回那里的最佳用途是什么。。。我猜返回true还是false?返回false
将取消单击事件。当您需要进行验证(防止重定向)时非常有用。我同意这取决于OP打算做什么。不幸的是,他似乎忘记了回来。@phoffer-是的,这种情况太频繁了。一群人渴望帮助,但没有互动。可能不习惯这么快就得到答案。你说得对。如果我问一个问题,我想做的是确保下一个小时我有空,只是为了互动。当大家一起工作的时候,这个网站简直太棒了。我很抱歉。我不习惯快速得到回复,下次我会问问题,并密切关注帖子。谢谢你的帮助;)@GoTTimw-没问题o) 这是一个非常独特的网站。你通常会在几分钟内得到答案。
$('#some_id').click(func1);