jquery .val()的函数参数将函数作为字符串返回

时间:2012-12-11 03:48:44

标签: jquery

作为onClick事件的一部分,每个被点击的行的后续兄弟的隐藏“序列”输入的值减少了一个。

$('#variants_' + product + ' .sequence')
    .filter(function(){
        return parseInt(this.value, 10) > sequence;
    })
    .val(function(index, value){
        return value - 1;
    });

我试图改变的输入最终看起来像这样:

<input type="hidden" name="v_sequence_6" id="v_sequence_6" value="function (index, value){
                    return value - 1;
                    }" class="sequence">

如何在不将其转换为字符串的情况下使用.val()的函数参数?

修改 这是相关功能的其余部分

function deleteVariant(row, product) {
var x = /x/
var sequence = $('#variantRow_' + row + ' .sequence').val();
if (! x.test(row) ){
    $('#variants_' + product).closest('#variants').append("<div class='grayover'><div class='ajaxLoaderContainer'><div class='ajaxLoader'><img src='images/ajax-loader.gif' /></div></div></div>");

    $.post('includes/_e-learning_ajax.php', { 'mode': 'deleteVar', 'variant': row }, function(data){
        if (data == 'success'){
            $('#variants_' + product + ' .sequence')
                .filter(function(){
                    return parseInt(this.value, 10) > sequence;
                    })
                .val(function(index, value){
                    return value - 1;
                    });
            $('#variantRow_' + row).remove();
            coursesReady();
        } else {
            alert(data);
        }
        $('.grayover').remove();
    });

} else {
    $('#variantRow_' + row).remove();
}
}

1 个答案:

答案 0 :(得分:0)

问题似乎是你的jQuery版本小于1.4,这是在引入val方法的函数传递时(我们从你的评论中的对话中确定的)。这确实有意义,因为val方法将在正在传递的函数上调用toString并将其完全打印为输入值。

这可以在这里显示:http://jsfiddle.net/Hhk7T/