2013-06-03 27 views
13

Khi tôi điều khiển ghi nhật ký một đối tượng jquery ví dụ.Tại sao Google Chrome có đầu ra console.log() khác nhau thông qua jQuery?

var s = $("#item"); 
console.log(s); 

tôi nhận được một cái gì đó như thế này

[div#item, context: document, selector: "#item", jquery: "1.9.1", constructor: function, init: function…] 

Tôi nhớ trước (một tháng trước hoặc lâu hơn), tôi sẽ nhận được một cái gì đó như:

[<div id="item">pas</div>] 

là sự thay đổi này trong Chrome chính nó? Hoặc có một sự thay đổi trong jquery? Hoặc tôi thực sự đã làm một cái gì đó để làm cho sản lượng trông khác nhau

Tôi thấy đầu ra thứ hai này dễ đọc hơn nhiều và tôi có thể di chuột qua nó và đánh dấu nó trên trang. Bây giờ tôi nhận được quá nhiều infos nó khá khó để đọc

+3

* Dường như * là jQuery: [demo] (http://jsfiddle.net/davidThomas/9prm9/); mặc dù bây giờ tôi nghĩ về nó, nó có thể chỉ là một sự khác biệt trong cách Chrome ghi lại các đối tượng, chứ không phải là các nút/phần tử DOM. –

+0

có vẻ như nó hoạt động khác với javascript đơn giản. Cảm ơn vì điều này, thực sự hữu ích – Zokora

+1

Tôi đã thử thay đổi phiên bản jQuery trong fiddle, nó không thay đổi đầu ra đáng kể (sự khác biệt chính là đối tượng jQuery không có thuộc tính 'jquery: ' trước 1.9). Tôi nghĩ sự khác biệt mà OP có thể nghĩ đến là giữa việc đánh giá một đối tượng jQuery trong giao diện điều khiển và sử dụng 'console.log'. – Barmar

Trả lời

0

Điều tôi nghĩ bạn đang nhận thấy là sự khác biệt giữa việc đánh giá một đối tượng jQuery trong bảng điều khiển và hiển thị nó với console.log(). Sử dụng số fiddle của David Thomas, đặt điểm ngắt trên câu lệnh console.log. Khi nó dừng lại ở breakpoint, gõ $s vào giao diện điều khiển và bạn sẽ thấy

[<div id="item">pas</div>] 

Sau đó tiếp tục, và bạn sẽ thấy đối tượng tiết in bằng console.log().

Tôi thực sự không biết jQuery hoặc Chrome đang làm gì gây ra sự khác biệt này. Đầu ra khi bạn nhập $s có vẻ là kết quả của $s.toArray(), trong khi console.log() hiển thị đối tượng jQuery thực.

Bằng chứng khác cho thấy đây không phải là hành vi mới - tôi vừa liên kết câu hỏi trùng lặp từ tháng 11.

0
var s = $("#item").html(); 
console.log(s) 
+1

điều này sẽ cung cấp cho bạn 'pas' không' [

pas
] ' – zzlalani

+0

http://stackoverflow.com/questions/13974740/how-do-i-console-log-a-jquery-dom-element-in -rome –

+0

Tôi hy vọng đây là trợ giúp đầy đủ –

-1
if div value printed on div .. then plz menstion html(). 

    var s = $("#item").html(); 

    console.log(s); 
0

thử ...

var s = $("<div>").append($("#item").clone()).html(); 

console.log(s); 

$(s).remove(); 

Nó không phải ở dạng đẹp nhất của mình nhưng kết quả là những gì bạn đang tìm kiếm và tôi chắc chắn rằng bạn có thể đưa ra một chức năng tốt cho nó ...

Về cơ bản tôi đang tạo một div, đặt một bản sao của #item vào trong đó, và mở rộng innerHTML của div ra bàn điều khiển để hiển thị toàn bộ phần tử #item. (Không chỉ bên trong của mụC#) Sau đó, tôi tiêu diệt s để dọn dẹp.

0

Có có thể có một sự thay đổi với jquery, kiểm tra như thế nào bây giờ họ đang đối phó với các đối tượng dom trong phiên bản 1.9.1

http://jsfiddle.net/5HJ3L/1/

nếu bạn thử console.log theo cách này

var s = $("#item"); 
console.log(s); 

sự đầu ra sẽ giống như

[div#item, context: document, selector: "#item", jquery: "1.9.1", constructor: function, init: function…] 
0: div#item 
context: document 
length: 1 
selector: "#item" 
__proto__: Object[0] 

nếu bạn kiểm tra xem nó chặt chẽ, bạn sẽ tìm thấy những sản lượng yêu cầu trong mảng trên tại chính 0, vì vậy đầu ra cho dòng sau sẽ

console.log(s[0]); 

Output:

<div id="item">pas</div> 

còn nếu bạn thử nó mà không jquery đầu ra sẽ là một bạn được yêu cầu

var e = document.getElementById('item'); 
console.log(e); 

Output:

<div id="item">pas</div> 

PS: đây không phải là một gợi ý đối với jquery nhưng để chứng tỏ họ sẽ có thỏa thuận bằng google-chrome

Correction: Cũng lưu ý rằng đề cập đến đầu ra trong câu hỏi là trong array hình thức trong khi những cách tôi đã đề xuất là trong string

0

Tôi nhận được kết quả mong đợi cho bảng điều khiển gửi phần tử DOM chứ không phải jquery.

console.log($("div")[0]) 
Các vấn đề liên quan