Sự quan tâm của vấn đề là chìa khóa ở đây, và vì vậy ràng buộc sự kiện là phương pháp thường được chấp nhận. Đây là cơ bản những gì rất nhiều câu trả lời hiện có đã nói.
Tuy nhiên đừng vứt bỏ ý tưởng đánh dấu khai báo quá nhanh. Nó có vị trí của nó, và với các khung như Angularjs, là trung tâm.
Cần phải có một sự hiểu biết rằng toàn bộ <div id="myDiv" onClick="divFunction()">Some Content</div>
đã bị xấu hổ rất nhiều vì nó bị lạm dụng bởi một số nhà phát triển. Vì vậy, nó đạt đến điểm của tỷ lệ bất khả xâm phạm, rất giống tables
. Một số nhà phát triển thực sự tránh tables
cho dữ liệu dạng bảng. Đó là ví dụ hoàn hảo về những người hành động mà không hiểu gì.
Mặc dù tôi thích ý tưởng giữ hành vi của mình tách biệt khỏi quan điểm của tôi. Tôi thấy không có vấn đề gì với việc đánh dấu tuyên bố những gì nó làm (không phải nó hoạt động như thế nào , đó là hành vi). Nó có thể ở dạng thuộc tính onClick thực tế hoặc thuộc tính tùy chỉnh, giống như các thành phần javascript của bootstraps.
Bằng cách này, bằng cách chỉ nhìn vào đánh dấu, bạn có thể thấy những gì đang làm, thay vì cố gắng đảo ngược các ràng buộc sự kiện javascript.
Vì vậy, như là một thay thế thứ ba cho các bên trên, sử dụng các thuộc tính dữ liệu để thông báo rõ ràng hành vi trong đánh dấu. Hành vi được giữ ngoài tầm nhìn, nhưng trong nháy mắt bạn có thể thấy những gì đang xảy ra.
Ví dụ về Bootstrap:
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Nguồn: http://getbootstrap.com/javascript/#popovers
Lưu ý Nhược điểm chính với ví dụ thứ hai là sự ô nhiễm của không gian tên toàn cầu. Điều này có thể được phá vỡ bằng cách sử dụng thay thế thứ ba ở trên hoặc các khung như Angular và các thuộc tính ng-click của chúng với phạm vi tự động.