是否可以将参数传递给点击或提交功能,如:
$("#example").click(function()
{
var myVar = x; // refering to x as passed argument
});
也许功能在函数内?
function Func(){
$("#example").click(function()
{
var myVar = x;
});
}
也许像调用Func()('33');
之类的东西会将33传递给点击功能,毕竟有可能吗?
答案 0 :(得分:1)
这取决于您想要传递的“参数”。其中大部分时间通常都是通过元素本身的一些简单属性来处理的:
<a rel="foo" href="http://google.com">Google</a>
<a rel="bar" href="http://stackoverflow.com">Stack Overflow</a>
哪个会使用rel
属性作为“参数”。您可以从$.click()
:
$("a").click(function(){
switch( $(this).attr("rel") ) {
case "foo":
// do x
break;
case "bar":
// do y
break;
}
});
您可以想象,这可以扩展为包含以下属性:
rel="foo,2,max"
在click-method中rel
的值为.split()
,在我们的逻辑中为我们提供了一系列“参数”。
$("a").click(function(){
var arguments = $(this).attr("rel").split(",");
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
});
答案 1 :(得分:1)
如果不知道自己想要完成什么,很难告诉你该怎么做。很多时候,当类似需求产生时,它与将ID传递给函数有关。有几种方法可以解决这个问题,但让我们看一下:
var $a = $('a'), // Pretend we have three `a` elements
keys = ['apple','orange','grape'];
$a.each(function(i,el){
var val = keys[i]; // Declare a variable to this scope using `var` and set it to the value you want:
$(this).click(function(){
alert(val);
});
});
现在,如果您点击第一个a
警报apple
,第二个orange
和第三个grape
。通过使用var
在函数范围中声明变量,可以使特定的点击知道正确的值。
答案 2 :(得分:0)
如果您想访问点击功能中传递给Func
的参数,您可以这样做:
function Func(x) {
$("#example").click(function()
{
var myVar = x;
});
}
内部函数定义构建一个闭包,外部函数的局部变量保存在该闭包的范围内,即使外部函数已经完成,仍然可以访问它。