在下面的代码中,我需要获取引发事件的元素的ID
$(document).ready(function ()
{
$(".selectors").live('change', function ()
{
$.post("GetCategoriesByParentId/", { ID: $(this).val() }, function (data)
{
var idd = $(this).attr('id'); //here
});
});
});
但idd
始终为“未定义”。为什么?
答案 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
});
});