2009-12-02 34 views
5

Sử dụng jquery, tôi muốn lấy javascript từ thuộc tính onClick của thẻ A.jquery attr ("onClick") - nghĩa là và ff

<a href='#' onClick='alert("boo");' /> 

Trong Firefox: alert($('a').attr("onClick")) show: alert("boo")

Trong IE 6/7: alert($('a').attr("onClick")) show: function anonymous(){alert("boo");return false;}

Làm thế nào tôi có thể lấy chỉ là javascript, và không phải là chức năng bao bọc, trong IE 6/7 sử dụng jquery? (hoặc javascript đơn giản)?

Franko

+0

Chỉ cần tò mò, tại sao bạn đặc biệt cần phải lấy 'alert ("boo")' trong ví dụ này? Bạn đang gọi nó từ một nơi khác hoặc chỉ khám phá vào lúc này? Nếu bạn đang cố truy lục giá trị vì một lý do khác, có thể có cách xử lý khác. – JamesEggers

+0

chỉ cần khám phá tại thời điểm này - đã tự hỏi tại sao tôi không thể nhận được văn bản/lý do tại sao hàm được trả về trong ie6/7. ie8 hoạt động như firefox ... –

+0

@frankie boyle Ok. Bây giờ tôi tò mò về bản thân mình nhưng muốn đảm bảo không có cách tiếp cận khác nếu bạn không chỉ khám phá. Cảm ơn. – JamesEggers

Trả lời

4

Làm thế nào tôi có thể lấy chỉ là javascript, và không phải là chức năng bao bọc, trong IE 6/7

Bạn thường không muốn dựa vào giá trị chuỗi cho xử lý sự kiện inline ở tất cả (trong thực tế bạn nên tránh sử dụng các thuộc tính xử lý sự kiện nội tuyến hoàn toàn có lợi cho ràng buộc với các hàm từ tập lệnh - đặc biệt nếu bạn đang sử dụng jQuery, nơi mà phương pháp này là chuẩn). Nhưng nếu bạn phải, giải pháp thay thế là phương thức DOM getAttributeNode.

var link= $('a')[0]; // or whatever 
alert(link.getAttributeNode('onclick').value); 
+0

Hoàn toàn đồng ý chuỗi cho xử lý sự kiện nội tuyến là sai - Tôi đã chỉ có một vở kịch và coudlnt thấy lý do tại sao IE đã hành xử khác nhau ... Cảm ơn bạn! –

+0

Nhưng sau đó có ASP.NET WebForms nơi một loạt các xử lý sự kiện onclick DOM 0 được tạo ra theo mặc định - Tôi rất vui khi tìm thấy câu trả lời này bởi vì tôi cần phải mess với họ ... tốt, sử dụng chúng ;-) – Oliver

0

Các bạn đã thử:

alert($('a').attr("onclick")) 

Trong XHTML onClick không phải là phiên bản đúng.

+0

Vì IE không hiểu XHTML (nó thấy nó là HTML không đúng định dạng) nên khó có thể xảy ra. – NickFitz

+0

sử dụng chữ thường Tôi nhận được: chức năng onclick() {alert ("boo");} - cùng một vấn đề –

2

Internet Explorer < 8 có thực hiện hoàn toàn bị phá vỡ của setAttribute và getAttribute mà đối phó với tài sản với tên được đặt thay vì thuộc tính.

Tôi không biết về công việc xung quanh.

+1

Để mở rộng về điều này: giá trị của thuộc tính có tên 'onclick' của thẻ neo là 'cảnh báo() 'gọi; giá trị của thuộc tính của nút DOM tương ứng với thẻ đó là hàm ẩn danh. –

2

Better vì thêm onclick thuộc tính là thay mặt cho IE6/IE7 giải pháp này:

$("a").click(function() { .. anything to do .. }) 
0

trình duyệt an toàn:

jQuery('a')[0].getAttribute('onclick'); 
Các vấn đề liên quan