jQuery-获取调用元素ID

Tim*_*ers 3 jquery autocomplete

问题

在自动完成功能的源函数中,我想获取选择器的ID。有没有一种方法可以遍历调用堆栈并得到它?是否JQuery有这种抽象水平?

为什么?

我将在页面上有多个自动完成功能,并且每个自动完成功能都将在服务器端进行不同的处理。我必须对源使用另一个函数。否则,我会使用URL +数据:很久以前= p

jQuery版本

的jquery 1.9.1

研究

当然,我一直在研究: JQuery API

如何使用jQuery从动态生成的表单元素获取元素ID?

我认为很多尝试都是行不通的,但现在我处于试错的阶段。

$(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);
            }
        });
Run Code Online (Sandbox Code Playgroud)

自动完成设置

    $("#inPdVehMk").autocomplete({
        source: autoCompletePost,
        minLength: 2,
        select: function(event, ui){
            alert(ui.label1);
            alert("value= " + ui.item.value + " id= "+ ui.item.id);
        }
    });
Run Code Online (Sandbox Code Playgroud)

源功能

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);
            }
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

sli*_*oad 5

我很尴尬地花了多长时间才弄清楚这一点。

在源函数中使用此行来获取自动完成功能的ID。

$(this.element).prop("id")
Run Code Online (Sandbox Code Playgroud)

由于自动完成是一个jQuery小部件,因此该this对象引用该小部件实例。要进入元素,您需要遍历它的element属性。

JSFiddle

公平地讲,除非您使用Widget Factory创建窗口小部件,否则记录的文档不多。