jQuery检索元素的id有问题

时间:2010-11-16 19:18:28

标签: jquery

在下面的代码中,我需要获取引发事件的元素的ID

$(document).ready(function () 
{
    $(".selectors").live('change', function () 
    {
        $.post("GetCategoriesByParentId/", { ID: $(this).val() }, function (data) 
        {
            var idd = $(this).attr('id'); //here
        });
    });
});

idd始终为“未定义”。为什么?

2 个答案:

答案 0 :(得分:3)

$.post回调的上下文中,this的值将设置为与live调用的值不同的值。您需要缓存this

的值
$(document).ready(function () 
{
    $(".selectors").live('change', function () 
    {
        var idd = this.id;

        $.post("GetCategoriesByParentId/", { ID: $(this).val() }, function (data) 
        {
            // idd is now the id of the changed element
        });
    });
});

答案 1 :(得分:1)

$(this)函数中的.post实际上并不是您在父循环中迭代的集合中的当前元素。修正:

$(".selectors").live('change', function () 
{
    $thisElement = $(this);

    $.post("GetCategoriesByParentId/", { ID: $(this).val() }, function (data) 
    {
        var idd = $thisElement.attr('id'); //here
    });
});