我正在使用jQuery和JavaScript。我有一个调用JavaScript函数的onclick事件。如何在jQuery中提取function_A和function_B的参数?
这是最好的方法吗?
我需要在点击JavaScript后进行Ajax调用。使用jQuery是否存在任何性能问题?
我的代码:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
//Here need to extract the JavaScript function arguments
var id1=from_javascript_function_A
var id2=from_javascript_function_B
var link1=from_javascript_function_A
var link2=from_javascript_function_B
//
</script>
</head>
<body>
<a href='#' onclick=javascript:function_A('first',1)>link1</a>
<a href='#' onclick=javascript:function_B('second',2)>link2</a>
</body>
</html>
答案 0 :(得分:3)
这样的事情怎么样?
<script>
$(document).ready(function(){
$("a.a").click(function(e){
DoWork('a',1,function_a);
});
$("a.b").click(function(e){
DoWork('b',2,function_b);
});
});
function DoWork(s,i,f){
f(s,i);
alert("after click:" + s + " " + i);
}
function function_a(s,i){
alert("a:" + s + " " + i);
}
function function_b(s,i){
alert("b:" + s + " " + i);
}
</script>
</head>
<body>
<a href="#" class="a">a</a>
<a href="#" class="b">b</a>
</body>
答案 1 :(得分:0)
如果你真的想从函数调用中提取参数,你需要做一堆手动解析,例如,
$("a").each(function(){
var onclicktext = $(this).attr("onclick");
if(onclicktext.indexOf("function_A") > -1){
// Do more parsing here
}
if(onclicktext.indexOf("function_B") > -1){
// Do more parsing here
}
});
答案 2 :(得分:0)
函数参数只能在该函数中可见。通常它们是变量,它们的值仅在调用函数时才有意义(在您的示例中,单击相应的链接时)。在$(document).ready
内,它们的值无关。
如果参数不是变量,它们是已知的,无论如何你都不会问这个问题。
答案 3 :(得分:0)
如果您无法编辑HTML代码,那么您所能做的只是一些丑陋的黑客攻击:
$("a").each(function(){
fnStr = ($(this).attr('onclick')).toString();
re = /\"[^\"]+\"/
alert(re.exec(fnStr));
re = /\'[^\"]+\'/
alert(re.exec(fnStr));
});
上面的代码使用regular expressions来获取引号之间的参数。亲自尝试一下;不同的浏览器可能会有不同的行为。