将两个参数传递给函数

时间:2012-04-24 19:04:43

标签: javascript jquery

我尝试发送一个javascript函数2这样的参数:

var par1;
var par2;

$('#somediv').append('<div onclick="somefunction('+par1+','+par2+');"></div>');

我正在创建很多像这样的div并且都是动态的,我只需要找到正确的方法将par1和par2传递给以后操作它们。

现在只有par1没问题,par2未定义(它们都有字符串值)。

有什么建议吗?

5 个答案:

答案 0 :(得分:2)

那是因为你的代码中未定义par1和par2。

答案 1 :(得分:2)

使用默认值初始化var1var2

答案 2 :(得分:2)

正确使用这样的奇特内容的方法是在jQuery中使用.live.delegate.on

var par1; // assuming these get values at some point
var par2; // assuming these get values at some point
$('#somediv').append('<div class='fancyDiv'></div>');
$('#somediv').on("click", ".fancyDiv", function() {
   someFunction(par1, par2);
}))

// use delegate instead of on if you're in jQuery 1.6 or lower
$('#somediv').delegate(".fancyDiv", "click", function() {
   someFunction(par1, par2);
}))

答案 3 :(得分:1)

使用jQuery onclick例如

var par1 = 'par1';
var par2 = 'par2';

$('<div>Click</div>').appendTo('#somediv').click(function(){
    somefunction(par1, par2)
})

function somefunction(v1, v2){
    alert(v1+" "+v2);
} 
​

在行动http://jsfiddle.net/anuraguniyal/gjz72

中查看

但这取决于你获得par1和par2的位置,如果它们与div相关并且你需要为每个div设置不同的一个,你应该将它们作为数据属性添加到html中。

$('<div data-par1="par1" data-par2="par2" >Click</div>').appendTo('#somediv').click(somefunction)

function somefunction(){
    alert($(this).attr('data-par1')+" "+$(this).attr('data-par2'));
} 
​

在行动http://jsfiddle.net/anuraguniyal/gjz72/14/

中查看

答案 4 :(得分:0)

perimeterBox就是这里的功能

var perimeterBox = function(length,width)
{
    return length+length+width+width;
};

perimeterBox(5,5);