0

私は次のことをする必要があります:

    $("#deleteLink").attr('data-row', $(this).attr('id'));
    $("#editLink").attr('data-row', $(this).attr('id'));
    $("#deleteLink").attr('data-href', '/Admin/Contents/Delete' + params);
    $("#editLink").attr('data-href', '/Admin/Contents/Edit' + params);

これらの変数の設定をjQueryと組み合わせる方法はありますか?

4

2 に答える 2

0
$("#deleteLink,#editLink").each(function(){
    $(this).attr('data-row', this.id);
    $(this).attr('data-href', '/Admin/Contents/'+this.id.substr(1).split("Link")[0] + params);
  });

またはuse.data()

$("#deleteLink,#editLink").each(function(){
    $(this).data('row',this.id);
    $(this).data('href', '/Admin/Contents/'+this.id.substr(1).split("Link")[0] + params);
  });
于 2012-07-23T05:08:59.463 に答える
0

あなたの質問thisは、あなたがどこで使用したかを明確にしません$(this).attr("id")。それが他の要素である場合、たとえば、表示した4行が他の要素のクリックハンドラーなどの内部にあるため、私の意見では、これを行うための最も効率的で読みやすい方法は次のようになります。

$("#deleteLink").attr({'data-row' : this.id,
                       'data-href' : '/Admin/Contents/Delete' + params});
$("#editLink").attr({'data-row' : this.id,
                     'data-href' : '/Admin/Contents/Edit' + params});

つまり、その構文を.attr()使用すると、マップを渡して同じ要素に複数の属性値を一度に設定できますが、リンク要素は異なるdata-href値が設定されるため、一度に1つずつ実行します。

ただし、これでは、一度に複数の要素の属性を設定することについての質問に実際に答えることはできません。これは、次のように行うことができます。

$("#deleteLink,#editLink").attr('data-row', this.id)
                          .attr('data-href', function(i,a) {
                              var action = this.id.split("Link")[0];
                              return '/Admin/Contents/' +
                                     action.charAt(0).toUpperCase() +
                                     action.substr(1) + params;
                           });

その最初の行は、両方のリンク要素を含むjQueryオブジェクトを作成し、それらを使用して、保持する値と.attr('data-row', this.id)同じ属性を持つように両方を設定します。(私はまだ他の要素があると思います。)data-rowthis.idthis

2行目は、別の呼び出しをチェーン.attr()します(同じ要素を再度選択するために関数を再度呼び出す必要がないようにするため$())。今回は.attr()、コールバック関数を渡す場所の構文を使用します。この関数は、関数内のどこで処理されている要素ごとに呼び出されます。thisは変更される要素であり、属性は返されたものに設定されます。

メソッドの詳細については、.attr()こちらをご覧ください。

于 2012-07-23T05:55:17.240 に答える