2015-08-01 13 views
9

Tôi không tìm được cách để lấy giá trị được mở rộng aria từ DOM.Nhận giá trị được mở rộng bằng aria

<a class="accordion-toggle collapsed" href="#collapse-One" data-parent="#accordion-1" data-toggle="collapse" aria-expanded="false"> 
    <i class="fa fa-search-plus"></i> 
    test 
</a> 

Tôi muốn thử nghiệm nếu nó true sau đó tôi có thể thay đổi <i> lớp để fa-search-minus. Tôi cố gắng này, nhưng tôi luôn luôn nhận được một giá trị không xác định:

console.log($(this).find('a.aria-expanded').val()); 

Trả lời

13

aria-expanded là một thuộc tính trên phần tử, không phải là một lớp, vì vậy chọn là không chính xác. Thứ hai, bạn nên sử dụng hàm attr() để lấy giá trị của thuộc tính đó. val() nhằm truy xuất thuộc tính value từ các yếu tố liên quan đến biểu mẫu, chẳng hạn như inputtextarea. Hãy thử điều này:

console.log($(this).find('a[aria-expanded]').attr('aria-expanded')); 
+0

Cảm ơn bạn !! điều đó rất hiệu quả. –

+1

Điều này trả về một giá trị không xác định. Có cách nào để có được giá trị aria-mở rộng của accordion. – monisha

+2

Nếu bạn nhận được 'không xác định' từ điều này, có khả năng bộ chọn của bạn không chính xác. Tôi khuyên bạn nên bắt đầu một câu hỏi mới bao gồm HTML và JS bạn đang sử dụng. –

1

Bạn có thể sử dụng JavaScript để đạt được điều này:

document.getElementsByTagName('a')[0].attributes[4].value 

Từng bước giải thích:

  1. Lấy yếu tố truy nã, bằng cách sử dụng một số chọn - ở đây tôi sử dụng the

    document.getElementsByTagName('a')[0] 
    

nhưng bạn có thể sử dụng bất kỳ bộ chọn nào khác mà bạn thích.

  1. Truy cập mảng thuộc tính của phần tử và tìm vị trí của thuộc tính mong muốn - trong trường hợp này sẽ là 4, vì aria-expanded là thuộc tính thứ 5 của thẻ.
  2. Từ đó bạn chỉ nhận được giá trị và điều đó sẽ cho bạn "sai" (trong trường hợp này).

Vấn đề duy nhất với phương pháp này là nó hơi khó mã hóa, vì vậy nếu bạn thêm một số thuộc tính vào thẻ, vị trí trong mảng thuộc tính cho thuộc tính mở rộng aria có thể thay đổi.

+1

Tôi không chắc chắn truy cập các thuộc tính theo chỉ mục thay vì khóa là một ý tưởng hay. Điều gì sẽ xảy ra khi một thuộc tính mới được thêm trước khi 'mở rộng aria', hoặc một thuộc tính bị xóa trước đó? –

+0

Đó là lý do tại sao tôi nói rằng giải pháp này hơi khó mã hóa. –

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