6

我想在单击时传递参数<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

任何的想法?

4

3 回答 3

6

一个解决方案是使用数据属性

<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 文档,您将不得不使用更兼容的 jQuery 数据功能(但现在几乎没有理由不使用 HTML5 doctype):

var para1 = this.data('para1');
于 2012-10-26T08:20:13.790 回答
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>
于 2012-10-26T08:24:09.760 回答
0

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

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

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

于 2012-10-26T08:24:13.383 回答