在jQuery中将相同的回调传递给不同的attr?

时间:2017-07-13 15:30:44

标签: javascript jquery

假设我想将jQuery的任何属性数增加1,那么就说。

例如

<label for='question_1' class='question_content_label'>
<input type='text' id='question_1' class='question_content'>

我想将其ID增加1,因此它变为

<label for='question_2'>
<input type='text' id='question_2'>

我以为我会在jQuery中这样做:

$('body').find('.question_content').attr('for',function (index,name){
            return name.replace(/(\d+)/, function(fullMatch,n){
                return Number(n) + 1;
                console.log(n);
            });
        });

$('body').find('.question_content_label').attr('for',function (index,name){
            return name.replace(/(\d+)/, function(fullMatch,n){
                return Number(n) + 1;
                console.log(n);
            });
        });

我不想重复这个:

function (index,name){
            return name.replace(/(\d+)/, function(fullMatch,n){
                return Number(n) + 1;
                console.log(n);
            });
        };

我想创建这样的功能

function increment_attr_number(index,name){
            return name.replace(/(\d+)/, function(fullMatch,n){
                return Number(n) + 1;
                console.log(n);
            });
        };

像这样传递:

$('body').find('.question_content_label').attr('for','increment_attr_number');

但它不起作用

感谢:)

1 个答案:

答案 0 :(得分:4)

您需要传递函数引用,而不是它的字符串表示

$('body').find('.question_content_label')
         .attr('for', increment_attr_number);