this.prop不是一个函数?

时间:2016-12-18 18:36:07

标签: javascript jquery

我的jQuery代码是:

$('#edit').click(function(){
    var data = $("#list :input").serialize();
    $.post($("#list").attr('action'), data, function(json) 
    {
        currentRow = json.rowArr[0];
        $("#id").val(currentRow.id);
        $("#id_disp").val(currentRow.id);
        $("#shop").val(currentRow.shop);
        $("#category").val(currentRow.category);
        $("#item").val(currentRow.item);
        $("#qnty").val(currentRow.qnty);
        $("#unit").val(currentRow.unit);

        $.each($("#price_based_on").children('option'), function(index, val) {
            if(this.value.toUpperCase()==currentRow.price_based_on.toUpperCase())
            {
                console.log("Match");
                this.prop("selected", true);
            }
        });

        $("#mrp").val(currentRow.mrp);
        $("#sellers_price").val(currentRow.sellers_price);
        $("#last_updated_on").val(currentRow.last_updated_on);

    },"json");
});

其中,唯一感兴趣的是线:

$.each($("#price_based_on").children('option'), function(index, val) {
    if(this.value.toUpperCase()==currentRow.price_based_on.toUpperCase())
    {
        console.log("Match");
        this.prop("selected", true);
    }
});

使用语句this.prop("selected", true);时出现错误:

  

未捕获的TypeError:this.prop不是函数

为什么当.prop()显然是一个存在的函数时会发生这种情况?我该如何解决?

3 个答案:

答案 0 :(得分:6)

$.each用于迭代对象或数组。如果要迭代jQuery对象中的节点,请使用.each,如下所示:

$("#price_based_on").children('option').each(function() {
     ... code here
});

在回调中,this指的是原生的DOM元素(它没有prop方法,所以你可能想做这样的事情来得到对包含jQuery节点的DOM对象的引用:

$("#price_based_on").children('option').each(function() {
    var $this = $(this);
    $this.prop('selected',true)
});

答案 1 :(得分:4)

this不是jquery对象,需要添加jquery selector $()以使其成为jquery对象,因此将其更改为$(this)

答案 2 :(得分:1)

this不是jQuery对象。使用$(this)

$(this).prop("selected", true);