2012-03-05 24 views
5

Tôi đã có một vấn đề với chức năng jquery của tôi trong một chủ đề wordpress. Tôi đã sử dụng chính xác chức năng này lần đau và nó hoạt động. Hàm trả về ID của hình ảnh, được tải lên thông qua trình tải lên wordpress..attr ('lớp') là không xác định trên jQuery()

Dưới đây là phần có liên quan:

// extract the img-ID from class attribute 
var jt = jQuery('img', html).attr('class'); 
alert(html); 
alert(jt); 
j1 = jt.split(' '); 

Cả hai cảnh báo là chỉ có tìm ra, những gì xảy ra. alert (html) trả về điều này:

<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" /> 

nhưng cảnh báo (jt) trả về "chưa xác định".

Bất kỳ ý tưởng nào? Nó sẽ là tuyệt vời, nếu bạn có thể giúp đỡ.

Jan

+0

mã không có ý nghĩa ... hiển thị cách html được xác định và giải thích những gì bạn đang cố gắng làm với html làm đối số ngữ cảnh – charlietfl

+0

những gì bạn nhận được trên cảnh báo (html)? nó là một đối tượng jqery? – Liviu

+0

qua .html() bạn yêu cầu nội dung giữa các thẻ. không dành cho thẻ thuộc tính. –

Trả lời

6

Việc bạn sử dụng đối số bối cảnh với biến html của bạn là không chính xác. Theo số jQuery documentation, đối số ngữ cảnh đó phải là phần tử DOM, tài liệu hoặc đối tượng jQuery. Nó không thể là một chuỗi HTML.

Nếu, những gì bạn có là một chuỗi và bạn muốn biến nó thành đối tượng DOM, bạn có thể làm điều đó theo một số cách.

Mã này sẽ tạo đối tượng DOM từ chuỗi html bạn có và sau đó truy xuất thuộc tính lớp từ đối tượng DOM đó.

var html = '<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" />'; 
var item = jQuery(html); 
var jt = item.attr('class'); 
alert(jt); 
j1 = jt.split(' '); 

Bạn có thể thấy nó hoạt động ở đây: http://jsfiddle.net/jfriend00/phnED/

+0

Cảm ơn! Điều đó đã làm việc !! – jabre

0

attr('class') không hoạt động. Có lẽ ngữ cảnh của bạn var (html) chỉ là không xác định.

Nhân tiện, để lưu trữ dữ liệu, bạn nên sử dụng HTML5 custom data- attributes thay vì các lớp học.

+0

html được xác định. Bạn có thể xem nội dung của html trong câu hỏi ban đầu của tôi. Tôi biết rằng mã này không phải là giải pháp tốt nhất. Nhưng tôi muốn sử dụng trình tải lên hình ảnh của wordpress và thẻ hình ảnh này trong Câu hỏi của tôi là điều duy nhất nó trả về. Tôi không có ảnh hưởng đến những gì nó trở lại, bởi vì tôi đang viết một chủ đề và chỉnh sửa các tập tin lõi không phải là một lựa chọn. – jabre

0

Khi có trao html dây, điều này bình thường nên làm việc:

$(html).attr('class'); 
+0

Không, điều đó không hoạt động. jt vẫn chưa được xác định. – jabre

2

Vấn đề của bạn là ở đây:

jQuery('img', html) 

Bối cảnh là html và dường như html là một hình ảnh vì vậy bạn tìm kiếm một img bên trong một img mà nó sẽ không tìm thấy.

EDIT:
Nếu html<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" /> sau đó bạn có thể lấy các lớp như thế này:

var klass = $(html).attr('class'); 

// You could do this to create an array of all classes 
var klasses = $(html).attr('class').match(/\S+/g); 
+0

Bạn có bất cứ đề nghị nào, những gì tôi có thể sử dụng thay vì jQuery ('img', html)? – jabre

+0

Tôi nghĩ rằng những người khác cũng có câu trả lời đúng nhưng tôi chỉ chỉnh sửa câu trả lời của mình. Cần làm việc. – elclanrs

1

Biến bối cảnh html mà bạn cung cấp là undefined tại thời điểm đó, và bạn nên xác định nó như DOM yếu tố hình ảnh là con của.

$(document).ready(function() { 
// extract the img-ID from class attribute 
var html = jQuery('.some-class'); 
var jt = jQuery('img', html).attr('class'); 
alert(html); 
alert(jt); 
j1 = jt.split(' '); 
}); 

http://api.jquery.com/jQuery/

http://jsfiddle.net/ssUhJ/

0

mà không html

var jt = jQuery('img').attr('class'); 
alert(jt); 
j1 = jt.split(' '); 
alert(j1); 
+0

Nó có thể sẽ hữu ích cho OP nếu bạn giải thích mã mà bạn đang sử dụng. Chỉ cần viết một đoạn mã mà không cần giải thích thực sự không hoạt động tốt ở định dạng QA. – sinemetu1

+0

Câu trả lời (giải thích) đã được đăng làm bình luận ngay cho câu hỏi sau. –

0

Vấn đề là ở var jt = jQuery('img', html), từ jquery document, tham số thứ hai là bối cảnh của đối tượng jquery. kiểm tra chương trình đã sửa đổi trên http://jsfiddle.net/hYKnd/.

-1

Kể từ jquery 1.6 (xem docs for .attr), các .attr chuyển từ trả lại một chuỗi rỗng để trở về undefined.

Mở jsfiddle http://jsfiddle.net/QVqXC/ này và thay đổi phiên bản jquery đã tải và xem thông báo đầu ra thay đổi như thế nào.

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