2009-08-13 27 views
13

Làm thế nào tôi có thể tìm hiểu xem một đối tượng được bao bọc bởi jQuery hay không.Cách tìm hiểu xem phần tử có được jQuery bao bọc không?

var obj = $('div'); 

if(obj is a jQuery wrapped object) 
{ 
    then do something 
} 

Tôi khá mới trong thế giới Javascript.

Xin cảm ơn trước.

+0

Và việc sử dụng điều này sẽ là gì? – rahul

+0

cũng ... nó sẽ cho bạn biết nếu biến bạn đang xem là một đối tượng jQuery ... tôi nghĩ đó là hiển nhiên ..? một mẹo mà tôi chọn là luôn luôn tiền tố các biến của tôi là các đối tượng jQuery với $ (ví dụ: 'var $ obj = $ ('div');'). Điều này thực sự giúp bạn nhớ những gì bạn đang làm việc. – nickf

Trả lời

23

Ở đây bạn đi:

var isJQuery = obj instanceof jQuery; // or obj instanceof $; 
+4

Nếu nó giúp OP, $ chỉ đơn giản là một bí danh cho hàm jQuery. Vì lý do này "obj instanceof $" cũng sẽ hoạt động. –

+1

... và chào mừng bạn đến với câu lạc bộ, karim. :) –

+0

nội dung thú vị. tôi không biết điều này. –

-2

Không phải là một người sử dụng jQuery, đây là chưa được kiểm tra, vv nhưng

if (!(obj instanceof Element)) 
{ 
    // ... 
} 

có thể làm việc, trừ khi jQuery làm những điều kỳ lạ trong gói của nó. Tất nhiên điều này đòi hỏi bạn phải biết rằng obj không bao giờ có thể là một phần tử không phải jQuery, không phải DOM, nhưng hy vọng điều đó không khó thực thi.

1

Bạn có thể kiểm tra như thế này:

if(obj instanceof jQuery) { 
    // ... 
} 

Tuy nhiên, nó không phải là hoàn toàn đúng khi nói rằng các phần tử HTML được "bọc" trong một đối tượng jQuery, chứ không phải đối tượng jQuery là một tập hợp các số không hay nhiều HTML các yếu tố. Vì vậy, nếu bạn thực sự muốn cẩn thận bạn có thể kiểm tra đầu tiên cho dù nó có chứa bất kỳ yếu tố nào cả, như sau:

if(obj instanceof jQuery && obj.length > 0) { 
    var element = obj[0]; 
    // do something with element 
} 
+0

Đây là câu trả lời hay nhất. Một đối tượng jquery có thể "bọc" không có phần tử HTML nào cả. Vì 'obj.size()' hiện không được chấp nhận, bạn sẽ phải sử dụng 'obj.length'. –

2
if (obj.jquery) { 
    /* Do something */ 
} 

Đó là cách đơn giản nhất. Kiểm tra hàm tạo của đối tượng là một tùy chọn khác nhưng lưu ý rằng nó sẽ không hoạt động trên các bối cảnh toàn cục (ví dụ: giữa một trang cha và một khung).

0

Kiểm tra này có thể giúp phân biệt đối tượng mảng từ đối tượng "mảng giống như jQuery" nếu biến "phần tử" là một hoặc cái kia.

if (jQuery.isArray(element)) { 
    // plain array object: [] 
} else { 
    // jQuery wrapped object 
} 

Từ jQuery tài liệu:

$ .isArray() trả về một logic Boolean cho biết đối tượng là một mảng JavaScript (không phải là một đối tượng mảng giống như, chẳng hạn như một đối tượng jQuery).

Các vấn đề liên quan