问题
在自动填充的源函数中,我想获取选择器的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'); - undefined
我虽然尝试获取调用者函数名称,并使用它做某事......但似乎没有输出任何内容。
附加到源函数(这是荒谬的!!!将文本附加到函数中?!真的我绝望了......)
$("#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);
}
}
);
}
答案 0 :(得分:4)
我很尴尬地花了多长时间才弄清楚这一点。
在源函数中使用此行来获取自动完成的ID。
$(this.element).prop("id")
由于自动完成是一个jquery小部件,this
对象引用小部件实例。要访问该元素,您需要浏览它的element
属性。
公平地说,除非您使用Widget Factory创建窗口小部件,否则不会对此进行详细记录。
答案 1 :(得分:0)
首先,如果你有多个自动完成功能,你的选择器就是一个ID,所以你有多个具有相同ID的控件,这很糟糕。您已确保每个自动填充都具有唯一ID,并通过其他内容选择它们,让我们说一个类。我会尝试这样的事情:
$(".inPdVehMk").autocomplete({
source: autoCompletePost($(this).attr('id')),
minLength: 2,
select: function(event, ui){
alert(ui.label1);
alert("value= " + ui.item.value + " id= "+ ui.item.id);
}
});
function autoCompletePost(id, request, response){
//alert($(this).attr('id')); //your in a function so this is not pointing to a control
$.post(AjaxPageAutoComplete, { searchTerm: request.term, field: id},
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);
}
}
);
}
我希望这有帮助。