自昨天以来,我一直在努力解决这个问题,但我无法弄清楚为什么我一直收到错误消息“......不是一个功能”。这是HTML代码
<td>
<input class="itemAC" name="Item[0][name]" id="Item_0_name" type="text" value="" />
<input class="itemId" name="TransactionDetail[0][itemId]" id="TransactionDetail_0_itemId" type="hidden" value="" />
</td>
JS代码:
$(".itemAC").autocomplete("/inventory2/index.php?r=item/AjaxLookup",{
'minChars':2,'delay':500,'matchCase':false,'max':10}
).result(function(event,item){alert(this.next().id)}
);
我得到“this.next不是函数”错误,我尝试了$(this).next,$(“#”+ this.id).next并且我得到了相同的错误消息,我在做什么错?
编辑: 好的,所以我试图删除几乎所有的HTML和JS代码,以便HTML正文包含:
答案 0 :(得分:0)
应该是$(this)
而不是this
使用this
时,它引用DOM对象,而使用$(this)
引用具有next()
方法的jQuery对象。由于您尝试使用DOM对象,因此不知道该方法是什么。
答案 1 :(得分:0)
我不认为这是一个范围问题,更多的是JQuery使用问题。 this
确实引用了Dom对象,并且不允许您使用next()
,但是当正确使用$(this).next()
时,要访问目标对象的id属性,您需要使用正确的jquery语法:$(this).next().attr("id"));
。
这应该适合你:
$(".itemAC").autocomplete("/inventory2/index.php?r=item/AjaxLookup",{
'minChars':2,'delay':500,'matchCase':false,'max':10}
).result(function(event,item){alert($(this).next().attr("id"))}
);
如果您要设置第二个输入的值,请使用.val()方法来完成此操作。