0

此代码打印大约 15 行数据,每行附近都有这个选择框。我需要为每一行捕获用户选择的值,以将其发送到下一个函数。我收到此错误:未捕获的类型错误:对象 # 没有方法“val”。有没有更好的方法来实现这一目标?

count = 1;
$.each(data, function(index, element) {
    $('<div class="hd_field">Payment Format: <select name="Payment_Format" id="Payment' + count + '" class="Payment_Format"><option value="CTX" selected="selected">Company to Company</option><option value="PPD">Company to Person</option></select><div id ="Selected_Format' + count + '"></div></div>').appendTo(newDiv3);
    $('select#Payment' + count).change(function() {
        alert(this.val());
        PaymentFormat = $(this).val();
        element.PmtRec.PmtFormat = PaymentFormat;
        $('#Selected_Format' + count).text(PaymentFormat);
    });
    console.log(data);
    count = count + 1;
});​
4

1 回答 1

1

您的错误在这一行被抛出:

$('select#Payment'+count).change(function() { 
    alert(this.val()); //Here
    //...
});

问题是在change事件处理程序中,this指的是实际的 DOM 节点,而不是 jQuery 对象,并且 DOM 节点不会有val方法。如果你想使用,你需要将它传递给 jQuery val

$('select#Payment'+count).change(function() {
    alert($(this).val()); //Pass `this` to jQuery
    //...
});
于 2012-06-06T15:49:55.017 回答