2015-07-22 17 views
8

Trong jQuery tôi có đoạn mã sauLàm thế nào để kích hoạt sự kiện nhấp chuột sử dụng JavaScript trên querySelectorAll

$("li#credit").trigger('click'); 

Mã này gây nên sự kiện nhấp chuột duy nhất trên li có tín dụng id.

Bây giờ để làm điều này sử dụng JavaScript

document.querySelectorAll("li#credit").click(); 

Tôi nhận được lỗi:

click() is not a function

Trang tôi đang làm việc có nhiều yếu tố với id "tín dụng", tôi cần phải kích hoạt một nhấp chuột sự kiện chỉ trên <li> có tín dụng id.

+1

* "Trang tôi đang làm việc có nhiều yếu tố với id "tín dụng"" *. Điều đó không hợp lệ. ID phải là duy nhất. Các 'querySelectorAll' có thể lấy chúng, nhưng nó vẫn còn sai lầm. –

+0

Vâng, tôi biết đó là không hợp lệ, nhưng đó là cách nó được cho hơn 10 năm, tôi không có bất kỳ kiểm soát để thay đổi html, thậm chí không sử dụng jQuery –

Trả lời

11

querySelectorAll trả về đối tượng NodeList (source) và không phải là phần tử DOM. Một đối tượng NodeList chứa các phần tử DOM.

Mã của bạn cần phải thay đổi để có được những yếu tố đầu tiên và sau đó gọi click():

document.querySelectorAll("li#credit")[0].click(); 

Nếu bạn muốn kích hoạt sự kiện .click() cho tất cả các yếu tố mà bạn có thể thực hiện một vòng lặp for

for(var i = 0; i<elems.length; i++) { 
    elems[i].click(); 
} 
+1

'document.querySelectorAll (" li # tín dụng ") [0 ] .click(); 'là một tùy chọn tuyệt vời và đơn giản về cơ bản gọi hàm' click() 'trên phần tử đầu tiên và có lẽ chỉ trong mảng. – Alex

+0

Có thể thêm một cái gì đó như thế này 'addEventListener ('click'' nếu không làm thế nào tôi có thể gọi một hàm nếu được bấm theo cách này' document.querySelectorAll ("li # credit") [0] .click(); ' ? – utdev

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