jQuery在选择器中使用带有字符串的变量

时间:2012-06-06 15:47:07

标签: jquery

此代码打印约15行数据,每行附近有此选择框。我需要为每一行捕获用户选择的值,以将其发送到下一个函数。我收到此错误:未捕获TypeError:对象#没有方法'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;
});​

1 个答案:

答案 0 :(得分:1)

你的错误就出现在这一行:

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

问题是在change事件处理程序中,this指的是实际的DOM节点,而不是jQuery对象,而DOM节点不会有val方法。如果要使用val

,则需要将其传递给jQuery
$('select#Payment'+count).change(function() {
    alert($(this).val()); //Pass `this` to jQuery
    //...
});