我需要做以下事情:
$("#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结合起来。
答案 0 :(得分: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);
});
OR use.data()
$("#deleteLink,#editLink").each(function(){
$(this).data('row',this.id);
$(this).data('href', '/Admin/Contents/'+this.id.substr(1).split("Link")[0] + params);
});
答案 1 :(得分: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});
也就是说,使用.attr()
的语法允许您传入一个映射以同时在同一元素上设置多个属性值,但是一次一个地执行一个链接元素,因为它们将具有不同的{{ 1}}值设置。
但是,这实际上并没有回答你关于一次设置多个元素属性的问题,你可以这样做:
data-href
第一行创建一个包含两个链接元素的jQuery对象,并使用$("#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;
});
将它们设置为具有相同的.attr('data-row', this.id)
属性,等于data-row
保持的值。 (我仍然认为this.id
是其他元素。)
第二行链对this
的另一次调用(为了避免再次调用.attr()
函数再次选择相同的元素),这次使用语法传递回调函数的$()
- 为正在处理的每个元素调用此函数,其中函数.attr()
中的元素是被修改的元素,属性设置为您返回的任何元素。