5

Tôi đã làm việc này một lúc và dường như không thể đi đến đâu. Về cơ bản tôi có autocomplete trên một loạt các yếu tố đầu vào của lớp, nhưng tôi cần phải có được đầu vào cụ thể id để xây dựng các đối tượng để gửi ajax (Tôi phải sử dụng POST cho dự án này không GET).Tự động hoàn thành jQuery trên lớp học, cách lấy 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

Tôi khá mới để jQuery nhưng, bạn đã thử sử dụng attr ('id') thay vì .prop ('id')? Theo như tôi biết, id là attr, không phải đạo cụ ... Ngoài ra, vì bạn đang sử dụng cú pháp chấm, $ (this) nên là con đường để đi vì bạn đang nhắm mục tiêu đối tượng jQuery. Hy vọng nó giải quyết được vấn đề. – rafaelbiten

Trả lời

10

Hãy thử:

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

hay:

this.element[0].id; 

Bên trong source gọi lại, this đề cập đến trường hợp widget. Để có được phần tử mà widget được gắn vào, bạn nên sử dụng this.element, là một đối tượng jQuery.

+0

Andrew, nó có liên quan gì tới .get (0) mà một số người sử dụng không? Nếu có, đây là điều mà tôi không thể hiểu được. Tại sao cần phải trỏ đến yếu tố như vậy? = \ – rafaelbiten

+2

@ 7th: Vui lòng xem cập nhật của tôi. 'this' bên trong autocomplete là instance của widget, do đó' this.element' là phần tử được áp dụng cho nó. 'element.get (0)' sẽ lấy phần tử đầu tiên của một đối tượng jQuery và tương đương với 'element [0]' ở trên. –

+0

Vâng, nó có ý nghĩa rất nhiều trong kịch bản này, nhưng đôi khi tôi thấy mọi người sử dụng .get (0) mà tôi sẽ không bao giờ tưởng tượng nó nên được sử dụng. Thật không may tôi không thể nghĩ ra một ví dụ tốt ngay bây giờ. Tôi sẽ cố gắng chú ý hơn khi tôi thấy điều đó một lần nữa và xem liệu tôi có thể hiểu tại sao nó được sử dụng hay không. Cảm ơn bạn đã dành thời gian giải thích cho tôi. Đó là phần của bạn. – rafaelbiten

3

Tôi đã thử nó trong một dự án của tôi. Điều này làm việc cho tôi:

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

CÓ, đó là công việc tuyệt vời. –

1

tôi đang ở trong một tình huống tương tự với bạn, user1572796 và đây là những gì làm việc cho tôi:

$(this).prop("id"); 
Các vấn đề liên quan