在一个jQuery调用中计算和编辑多个属性
我需要使用一个jQuery调用计算并编辑SVG元素(rect)的“x”和“y”属性 现在我知道你可以做到这一点:在一个jQuery调用中计算和编辑多个属性,jquery,edit,attr,Jquery,Edit,Attr,我需要使用一个jQuery调用计算并编辑SVG元素(rect)的“x”和“y”属性 现在我知道你可以做到这一点: var incBy = 20; $('#test').attr('x', function(i, val) { return parseInt(val) + incBy; }); 这对于计算和编辑单个属性很好,但是如何用这种方式编辑多个属性?我不确定如何在多个属性上进行编辑,但是如果您正在寻找防止重复代码的方法,可以重构匿名函数 $('#test').attr('x',
var incBy = 20;
$('#test').attr('x', function(i, val) {
return parseInt(val) + incBy;
});
这对于计算和编辑单个属性很好,但是如何用这种方式编辑多个属性?我不确定如何在多个属性上进行编辑,但是如果您正在寻找防止重复代码的方法,可以重构匿名函数
$('#test').attr('x', myFunction);
$('#test').attr('y', myFunction);
function myFunction(i, val) {
return parseInt(val) + incBy;
}
或者,更优雅地说,这(如果要修改数千个对象,也具有更高的性能)
$.fn.extend({
modCoordsBy:函数(金额){
对于(var i=0,j=this.length;i如果您将其计算出来,也可以在一行中完成:
$('#test').attr('x', myFunction).attr('y', myFunction);
function myFunction(i, val) {
return parseInt(val) + incBy;
}
或者将其进一步抽象,并将要应用此功能的属性传递到单独的函数中
process('x', 'y');
function process() {
for (var i = 0; i < process.arguments.length; i++)
$('test').attr(process.arguments[i]), myfunction);
function myFunction(i, val) {
return parseInt(val) + incBy;
}
}
过程('x','y');
函数过程(){
for(var i=0;i
这取决于您要走多远。您可以在参数中包括要调用的函数,以及选择条件。您可以尝试使用带有jQuery的attr方法的映射
$('#test').attr(
{'x': editValue,
'y': editValue
});
function editValue(i, val) {
return parseInt(val) + incBy;
};
这么简单…我怎么会忽略它!如果这样做有效,我会踢自己的嘴;)准备好你的嘴被踢LOL:D+1我不知道。尽管如此,它仍然是两个函数调用。谢谢你让它看起来很好@Tomalak!我需要更多的练习。没关系。:)这是网站的一个更好的功能,你可以(有足够的声誉)编辑每个帖子。
process('x', 'y');
function process() {
for (var i = 0; i < process.arguments.length; i++)
$('test').attr(process.arguments[i]), myfunction);
function myFunction(i, val) {
return parseInt(val) + incBy;
}
}
$('#test').attr(
{'x': editValue,
'y': editValue
});
function editValue(i, val) {
return parseInt(val) + incBy;
};