5

나는이 작업을 한동안하고 있으며 아무데도 갈 수없는 것처럼 보입니다. 기본적으로 나는 클래스에 의한 많은 입력에 대해 자동 완성을 가지고 있지만, 아약스를 게시하기위한 객체를 만들기 위해 특정 입력 ID를 가져야한다. (나는이 프로젝트를 위해 POST를 사용해야한다.)클래스에 jQuery 자동 완성, ID를 얻는 방법

$(".input_autocomplete").autocomplete({ 
    source: function(request, response) { 
    // here is where I get the hash from local storage, 
    // reference the id and build the object 
    // tried this.id, $(this).prop('id'), no luck 
    $.ajax({ 
    url: '/somepath/filename.htm', 
    contentType: 'application/json', 
    dataType: 'json', 
    type: 'POST', 
    data: JSON.stringify(obj), 
    success: function(json) { 
     return { 
     label: item.label, 
     value: item.label 
     } 
    }, 
    error: function() { 
     // error handling 
    } 
    }); // ajax 
} // source 
}); 
+0

나는, jQuery를에 아주 새로운 해요하지만 당신은 ATTR를 사용하여 시도해야 ('id') 대신 .prop ('id') 대신? 아는 한 이드는 소품이 아니라 attr입니다 ... 또한 점 구문을 사용하기 때문에 $ (this)가 jQuery 객체를 대상으로하고 있기 때문에 이동해야합니다. 희망이 문제를 해결합니다. – rafaelbiten

답변

10

시도 :

$(this.element).prop("id"); 

또는 다음 source 콜백의 내부

this.element[0].id; 

this 위젯 인스턴스를 나타냅니다. 위젯이 첨부 된 요소를 가져 오려면 this.element을 사용해야합니다. 이는 jQuery 객체입니다.

+0

Andrew, 일부 사람들이 사용하는 .get (0)과 관련이 있습니까? 그렇다면, 이것이 내가 정말로 이해할 수없는 것입니다. 왜 그런 요소를 지적하는 것이 필요한가? = \ – rafaelbiten

+2

@ 7 일 : 내 업데이트를 참조하십시오. 자동 완성 내부의 'this'는 위젯 인스턴스이므로 'this.element'는 적용된 요소입니다. 'element.get (0)'은 jQuery 객체의 첫 번째 요소를 가져 오며 위의 요소 [0]과 같습니다. –

+0

글쎄,이 시나리오에서는 많은 의미가 있지만 때로는 .get (0)을 사용하는 사람들이 내가 사용해야한다고 상상하지 못할 것이라고 생각합니다. 불행히도 나는 지금 좋은 모범을 생각할 수 없다. 다시 볼 때 더주의를 기울이며 사용 이유를 이해할 수 있는지 알아 봅니다. 시간을내어 설명해 주셔서 감사합니다. 그것은 당신의 일부분이었습니다. – rafaelbiten

3

나는 내 프로젝트에서 그것을 시도했다.

$(this.element.get(0)).attr('id'); 
+0

예, 훌륭합니다. –

1

가 나는 상황에서 user1572796 당신에게 유사 이것은 나를 위해 일한 것입니다 : 이것은 나를 위해 일한

$(this).prop("id");