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 に答える