传递参数以单击或提交功能

时间:2010-02-20 17:09:17

标签: javascript jquery

是否可以将参数传递给点击或提交功能,如:

$("#example").click(function()
{
  var myVar = x; // refering to x as passed argument
});

也许功能在函数内?

function Func(){
  $("#example").click(function()
{
  var myVar = x;
});
}

也许像调用Func()('33');之类的东西会将33传递给点击功能,毕竟有可能吗?

3 个答案:

答案 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在函数范围中声明变量,可以使特定的点击知道正确的值。

Demo of this working

答案 2 :(得分:0)

如果您想访问点击功能中传递给Func的参数,您可以这样做:

function Func(x) {
  $("#example").click(function()
  {
    var myVar = x;
  });
}

内部函数定义构建一个闭包,外部函数的局部变量保存在该闭包的范围内,即使外部函数已经完成,仍然可以访问它。

相关问题