如何使用href和onclick函数传递参数

时间:2012-10-26 08:17:28

标签: javascript jquery

我想在<a href>点击时传递参数,首先我有这个并且工作正常:

    <a href="#" rel="like{{num}}"> I like </a>|

   $("a[rel^='like']").click(function(){
            $.ajax({
                ...
            });

但我不知道如何将参数传递给该函数,所以我这样做:

    <a href="#" rel="like{{num}}"
          onclick="cap(para1, para2)"> I like </a>

最后,在我的Javascript中,我有这个简单的功能:

    function cap(para1, para2){
        alert('here');
    }

但我得到了这个错误:

ReferenceError: cap is not defined

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

解决方案是使用data attributes

<a href="#" rel="like{{num}}" data-para1="Oh"  data-para2="{{somepara}}"> I like </a>

<script>
function cap(para1, para2){
    alert('here');
}
$("a[rel^='like']").click(function(){
   var para1 = this.dataset['para1'];
   var para2 = this.dataset['para2'];
   cap(para1, para2);
});
</script>

如果您更喜欢更有条理的方法,也可以这样写:

<a href="#" rel="like{{num}}" data-params="{'para1':'Oh','para2':'{{somepara}}'}"> I like </a>

$("a[rel^='like']").click(function(){
   var params = this.dataset['params'];
   var para1 = params.para1;
   var para2 = params.para2;

请注意,如果文档不是HTML5文档,则必须使用兼容性更高的data function of jQuery(但今天几乎没有理由不使用HTML5 doctype):

var para1 = this.data('para1');

答案 1 :(得分:3)

您可能想尝试一下。

<a class="ilike" href="javascript:;" data-p1="abc" data-p2="123"> I like </a>

<script>
    function cap(para1, para2){
        alert('here');
    }

    $(function(){
        $('.ilike').click(function(){
            var $this = $(this);
            var p1 = $this.data('p1');
            var p2 = $this.data('p2');
            cap(p1, p2);
        });
    });

</script>

答案 2 :(得分:0)

如果你想通过onclick来做,那就是1)你已经在错误的范围内声明你的函数或2)在函数声明之前发生了另一个JS错误并导致它不被执行。

要解决范围问题,您可以尝试执行window.cap = function(para1, para2) { ...

要查看是否有任何错误,请尝试使用firebug或任何浏览器开发人员工具,并检查控制台下的错误。