0

我尝试发送一个 javascript 函数 2 参数,如下所示:

var par1;
var par2;

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

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

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

有什么建议么?

4

5 回答 5

2

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

于 2012-04-24T19:06:02.063 回答
2

Initialize the var1 and var2 with some default value.

于 2012-04-24T19:08:48.760 回答
2

做这种花哨的东西的正确方法是使用.live, .delegate, 或.on在 jQuery 中。

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);
}))
于 2012-04-24T19:09:59.863 回答
1

使用 jQueryonclick例如

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 设置不同的 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/

于 2012-04-24T19:25:56.537 回答
0

perimeterBox是这里的功能

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

perimeterBox(5,5);
于 2014-05-19T12:04:16.400 回答