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

Javascript 如何使用href和onclick函数传递参数,javascript,jquery,Javascript,Jquery,当我点击时,我想传递参数,首先我有这个参数,并且工作正常: <a href="#" rel="like{{num}}"> I like </a>| $("a[rel^='like']").click(function(){ $.ajax({ ... }); 但我得到了这个错误: ReferenceError: cap is not defined 有什么想法吗?解决方案是:

当我点击
时,我想传递参数,首先我有这个参数,并且工作正常:

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

   $("a[rel^='like']").click(function(){
            $.ajax({
                ...
            });
但我得到了这个错误:

ReferenceError: cap is not defined
有什么想法吗?

解决方案是:


你可以试试这个

<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>

功能盖(para1、para2){
警报(“此处”);
}
$(函数(){
$('.ilike')。单击(函数(){
var$this=$(this);
变量p1=$this.data('p1');
var p2=$this.data('p2');
cap(p1,p2);
});
});

如果您想通过onclick执行此操作,要么是1)您在错误的范围内声明了函数,要么是2)函数声明之前发生了另一个JS错误,导致无法执行

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


若要查看是否有任何错误,请尝试firebug或任何浏览器开发人员工具,并在console下检查错误。

cap
函数是否恰好位于
$(document).ready()
回调中?答案有点误导,因为似乎是“数据”属性与jQuery相关,而它是为HTML5文档引入的。因此,如果他使用HTML5,此解决方案将提供有效的标记。当然,它也适用于非HTML5标记。@JeanValjean+1您是对的,您可以使用dataset属性。我将进行编辑以删除对jQuery的提及。感谢您指出这一点。
ReferenceError: cap is not defined
<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;
var para1 = this.data('para1');
<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>