0

私はフォーラムで投票機能に取り組んでいます。投稿の回答をループしていますが、すべての回答には一意の ID があります。すべての「回答」には、テキスト、日付、その他のデータが含まれています。

また、ユーザーがクリックして投票する画像をクラスとともに追加しました。

<asp:Image runat="server" ImageUrl="~/Resources/Images/UpVoteImg.png" CssClass="upvote"/>

私のスクリプトでは、クラスですべてのクリック イベントをキャッチしますupvote

<script>
    $('.upvote').click(function () {
        var url = '<%= ResolveUrl("~/services/forumservice.asmx/voteup") %>';
        var userId = <%=SystemContext.Instance.SystemUser.UserId %>;

        var data = '{"entry":"' + 'HOW_DO_I_GET_YOU?' + '", "userid":"' + userId + '"}';
        $.ajax({
            type: "POST",
            url: url,
            contentType: "application/json; charset=utf-8",
            data: data,
            success: function () {
                alert('Thanks');
            },
            error: function () {

            }
        });
    });
</script>

私の問題:この画像をクリックすると、回答のIDでWebサービスを呼び出したいです。

私が試したこと/考えたこと

  • 画像に何らかのデータ属性が追加された場合、 thisキーワードはここに行く方法だと確信しています。私は例を見つけることができませんでした(おそらく間違った検索語)
  • プライベートフィールドを設定する画像に onclick() を作成し、クリックイベントを読み取ります (はい、それを避けたいです)
4

1 に答える 1

3

jQueryで メソッドclosestとメソッドを組み合わせて使用​​することをお勧めします。attr

例えば:

var userId = $(this).closest(.answercontainer).attr('id');

$(this)クリックされた要素のjqueryオブジェクトです

.closest(selector)セレクタに一致するまで DOM ツリーをたどる

.attr('id')トラバース先要素の id 属性の値を提供します

siblingsID が DOM の他の場所にある場合は、やなどの他のトラバース メソッドを確認する必要がある場合がありますfind

于 2013-09-07T22:41:35.147 に答える