Tôi đang cố gắng tạo biểu mẫu với một số hành vi động. Cụ thể, tôi có đầu vào của tôi trong divs, và tôi muốn làm cho nó như vậy khi người dùng nhấp vào bất cứ nơi nào trong div, đầu vào được chọn. Tôi đã sử dụng JQuery 1.2.6 và mọi thứ hoạt động tốt.Lỗi "đệ quy quá nhiều" trong JQuery 1.3.2
Tuy nhiên, tôi đã nâng cấp lên JQuery 1.3.2 và tôi đang nhận được một số hành vi lạ. Khi tôi nhấp vào bất kỳ đầu vào nào, tôi sẽ nhận được độ trễ trước khi được chọn. Bảng điều khiển lỗi Firefox của tôi mang lại cho tôi một số lỗi "quá nhiều đệ quy", từ bên trong thư viện JQuery. Tôi đã thử các trang trong Internet Explorer 7 và có một lỗi nói rằng "đối tượng không hỗ trợ tài sản hoặc phương pháp này".
Tôi có làm điều gì sai, hoặc đây có phải là lỗi trong JQuery không? Có ai biết cách khắc phục hành vi này, mà không quay trở lại phiên bản cũ không? Tôi đang sử dụng Firefox 3.0.7 trong trường hợp có vấn đề. Dưới đây là một ví dụ đơn giản tôi đã thực hiện để minh họa cho vấn đề:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>quiz test</title>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
</head>
<body>
<div class='question'>Favorite soda?
<div><input type='radio' name='q' value='A' id='a'><label for='a'>Coke</label></div>
<div><input type='radio' name='q' value='B' id='b'><label for='b'>Pepsi</label></div>
</div>
<script type="text/javascript">
$(function() {
$(".question div").click(function() {
$(this).children("input").click();
});
});
</script>
</body></html>
@ mikez302: khi bạn gọi stopPropagation(), sự kiện đã sôi sục lên đến div; bạn phải thêm một trình xử lý onclick vào nút và nhãn và dừng việc truyền bá ở đó; Ngoài ra, truy xuất sai là tương đương với preventDefault(), không stopPropagation() – Christoph
ps: giải pháp của bạn hoạt động với các nút radio, nhưng sẽ thất bại cho các hộp kiểm – Christoph
Cảm ơn bạn. Hành vi mới này hơi kỳ lạ, nhưng bây giờ tôi đã quen với nó. –