2011-01-26 20 views
6

Tôi đang cố gắng:JQuery có thể chọn theo văn bản của <label> hoặc liệt kê các thuộc tính của nó không?

$('label[text="someValue"]) 

nhưng tôi nhận được một tập rỗng trở lại, có lẽ hầu hết kể từ khi văn bản không phải là một thuộc tính.

Có thể chọn bằng văn bản của phần tử hoặc html bên trong không?

Chỉnh sửa::contains("someValue) không đủ nghiêm ngặt vì nó sẽ trả về bất kỳ kết quả trùng khớp nào của một số giá trị dưới dạng chuỗi con.

Có cách nào liệt kê tất cả các thuộc tính của phần tử để điều tra/thẩm vấn chúng trong khi gỡ lỗi/thực thi không?

+1

Chính xác những gì bạn có ý nghĩa gì với * là có cách nào để liệt kê tất cả các thuộc tính của phần tử *? Bạn có thể lặp qua các thuộc tính của đối tượng với 'for (var prop in obj)'. Ý bạn là vậy đúng không? Với Firebug hoặc trực tiếp trong Chrome, bạn cũng có thể nhận được một danh sách của một đối tượng với 'console.dir (obj)'. –

+0

Có, tôi muốn xem danh sách các thuộc tính được đặt cho phần tử đó là gì. Vòng lặp 'for' trông giống như một cách tốt để làm điều đó. Cảm ơn Felix. – StuperUser

Trả lời

12

Bạn có thể chọn tất cả và sau đó lọc xuống đến một tập hợp con nhỏ hơn bằng cách sử dụng filter:

$('label').filter(function() { 
    return $(this).text() === "someValue"; 
}); 
0

Có một chức năng để nhận văn bản của một nguyên tố:

http://api.jquery.com/html/

var labelText = $('.parentClass label').html(); 

gì thuộc tính nào bạn sẽ thêm vào nhãn? Bạn có thể gán biến các thuộc tính của nhãn (i muốn thường muốn cho thuộc tính nếu tôi đã làm việc với nhãn):

var labelAttr = $('.parentClass label').attr('for'); 
+0

'text()' có thể tốt hơn 'html()'. Nếu 'label' có phần tử' input' bên trong, nhãn đầu tiên sẽ trả về HTML của đầu vào đó, trong khi 'nhãn' sẽ chỉ trả về văn bản. –

+0

Tôi muốn liệt kê tất cả các thuộc tính của phần tử. Tôi hầu như luôn sử dụng 'for' nhưng nhãn này không dành cho đầu vào và chức năng bổ sung của tiêu điểm inteferes với các chức năng khác trên trang. – StuperUser

+0

Kiểm tra câu trả lời bên dưới ... thực hiện chính xác những gì bạn muốn. –

1

Tested này:

$.each($("#form label"), function() { 
     var nodes = this.attributes; 
     for(var i=0; i<nodes.length; i++) 
     { 
      alert(nodes[i].nodeName); 
     alert(nodes[i].nodeValue); 
     } 
    }); 
Các vấn đề liên quan