您的问题并不清楚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()
这里。