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

您的问题并不清楚this您在哪里使用过$(this).attr("id")。如果是其他元素,例如,因为您显示的四行在其他元素的单击处理程序或其他内容中,那么在我看来,最有效且易于阅读的方法是这样的:

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

也就是说,使用 that 的语法.attr()可以让您传入一个映射以一次在同一个元素上设置多个属性值,但一次只执行一个链接元素,因为它们将设置不同的data-href值。

但是,这实际上并不能回答您关于一次设置多个元素属性的问题,您可以这样做:

$("#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-row属性,等于任何值this.id。(我仍然假设this是其他一些元素。)

第二行链接另一个调用.attr()(以避免再次调用该$()函数以再次选择相同的元素),这一次使用.attr()传递回调函数的语法 - 为函数内正在处理的每个元素调用此函数this是被修改的元素,并且属性设置为您返回的任何内容。

有关该方法的更多信息在.attr()这里。

于 2012-07-23T05:55:17.240 回答
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 回答