2012-05-10 19 views
4

これは非常にシンプルに見えますが、jQueryの経験はほとんどありません。jQuery関数にパラメータを渡す?

<a id='edit'>Edit User</a> 

今、リンクをパラメータとして、各ユーザーのIDを持つ関数を呼び出す必要があります。

のは、私は、動的に生成されたHTMLテーブルを持っており、このテーブルの各行にリンクであるとしましょう。私はこのインラインライクを行うことができます:

<a id='edit' onClick='editUser(<?php echo $row['id']; ?>)'>Edit User</a> 

しかし、私はこれをjQueryでどうやって行いますか?

私はこのような関数を呼び出すことができます。

$('a#edit').click(function() { 
     editUser() 
     return false; 
    }); 

しかし、どのように私は、この関数にIDを渡すのですか?私は最初にそれを隠しフィールドに貼り付けてから要素idでそこから得ることができますが、確かに良い方法がありますか?

私はこのようにすべてのリンクが同じIDを持つことを認識しています。したがって、ユーザーIDを追加することによってリンクIDを動的に作成する必要がありますか?しかし、どうすればjQueryを呼び出すことができますか?

答えて

8

idsはHTML全体で一意である必要があります。その後、

<a class="edit" data-id="<?php echo $row['id']; ?>">Edit User</a> 

と::

$('a.edit').click(function() { 
    var id = $(this).data('id'); 
    // do something with the id 
    return false; 
}); 
+0

ありがとう、完璧に動作します。 – jovan

2

属性を使用してパラメータを渡します。

<a class='edit' data-id='<?php echo $row['id']; ?>'>Edit User</a> 

$('a.edit').click(function() { 
    editUser($(this).data("id")); 
    return false; 
}); 
+0

私は思いますdata-idはHTML5のみであることに言及する価値があります。 HTML4 DOCTYPEで使用すると、検証エラーが発生します。 – psynnott

0

カートはmentionnedとして、data-idあなたはHTML5を使用している場合は、移動するための方法があるので、あなたは、クラスセレクタとHTML5データ - *属性を使用することができます。あなたはHTML4を使用している場合、私はリンクのIDでこれを渡します。

<a id='edit-321' class='edit'>Edit User</a>

は、その後、あなたがこれを行うことができます(とreturn falseではなくevent.preventDefault()を使用!):

$('a.edit').click(function (evt) { 
    editUser($(this).attr("id").substring(5)); 
    evt.preventDefault(); 
}); 
関連する問題