【发布时间】:2015-02-14 22:53:42
【问题描述】:
问题
在自动完成的源函数中,我想获取选择器的 ID。有没有办法可以遍历调用堆栈并得到这个? JQuery 有这种抽象级别吗?
为什么?
我将在页面上有多个自动完成功能,并且每个自动完成功能在服务器端的处理方式都不同。我必须为源使用另一个函数。否则我会使用 URL + 数据:很久以前 =p
JQuery 版本
jquery-1.9.1
研究
当然,我经历过这一切: JQuery API
How to get element Id from dynamically generated form elements with jquery?
我认为很多这些尝试都行不通,但现在我正处于反复试验的阶段。
$(this).attr('id'); - 未定义
虽然我会尝试获取调用者函数的名称,并对其进行处理...似乎没有输出任何内容。
附加到源函数(这太荒谬了!!!将文本附加到函数?!我真的很绝望......)
$("#inPdVehMk").autocomplete({
source: autoCompletePost + "field="+$(this).attr('id'),
minLength: 2,
select: function(event, ui){
alert(ui.label1);
alert("value= " + ui.item.value + " id= "+ ui.item.id);
}
});
自动完成设置
$("#inPdVehMk").autocomplete({
source: autoCompletePost,
minLength: 2,
select: function(event, ui){
alert(ui.label1);
alert("value= " + ui.item.value + " id= "+ ui.item.id);
}
});
源函数
function autoCompletePost(request, response){
//alert($(this).attr('id')); //this is where I'm testing to see the ids.
$.post(AjaxPageAutoComplete, { searchTerm: request.term, field: 'inPdVehMk'}, //I want field to be dynamic depending on the calling selector.
function(data) {
var splitData = data.split("%");
var json = jQuery.parseJSON(splitData[1].toString());
if(data.search('autoCompleteError') !== -1 || data.length < 1){
DialogBox('Div_ErrorMessage^Open^autoCompleteError');
}else{
response(json);
}
}
);
}
【问题讨论】:
-
你需要使用委托。找到它被加载到的容器,然后使用
.find()来获取该项目。或者,如果涉及一些click操作,您可以使用e.target.id。 -
所以你需要知道
autoCompletePost函数中的id,对吧? -
@slicedtoad 是的,所以在我发布的代码中我正在寻找这个
'inPdVehMk',但在AutoCompletePost()函数中。所以我可以传递数据字段:'inPdVehMk'为$.post()。我不想为要设置的每个自动完成功能静态键入字段名称,所以我想让它获得调用选择器。 -
@PlantTheIdea 我认为这会起作用......我以前从未使用过它,所以我现在正在玩这个。我很高兴你向我展示了这个,因为我本可以在 4 个月前使用它。我只是想让你知道,在某个遥远的办公室里的一个小隔间里,有一个成年人在哭泣,希望他在 4 个月前就知道这一点。
-
@PlantTheIdea 源选项是回调,而不是事件。我不知道你怎么能委派它...
标签: jquery autocomplete