Tôi đã tự hỏi điều gì sẽ là cách tốt nhất để thực thi mã java-script chỉ trên các trang cụ thể.Cách tốt nhất để thực hiện js chỉ trên trang cụ thể
Hãy tưởng tượng chúng ta có một trang web dựa trên mẫu, viết lại quy tắc cho các thiết lập nội dung ist, jquery sẵn và nó về cơ bản trông như thế này:
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
...
include $content;
..
</body>
</html>
nội dung 'thông tin' chứa một nút, chúng tôi muốn một cái gì đó sẽ xảy ra khi nhấp chuột, nội dung 'cảnh báo' sẽ đưa ra dưới dạng tin nhắn, khi bạn di chuột qua một trường văn bản.
Cách tốt nhất để kích hoạt các hành động này là gì, mà không gặp lỗi, vì đối tượng không được tìm thấy?
Lựa chọn một: sử dụng window.location.pathname
$(document).ready(function() {
if (window.location.pathname == '/info.php') {
$("#button1").click(function(){'
//do something
})
}else if(window.location.pathname == '/alert.php'){
$("#mytextfield").hover(){
alert('message');
}
}
Lựa chọn hai: kiểm tra nếu các yếu tố tồn tại
$(document).ready(function() {
if ($("#button1").length > 0) {
$("#button1").click(function(){'
//do something
})
}else if ($("#mytextfield").length > 0){
$("#mytextfield").hover(){
alert('message');
}
}
Lựa chọn ba: bao gồm các kịch bản trong mẫu đã tải
//stands for itself
Đây có phải là giải pháp tốt hơn không? Hay tôi phải làm quen với một trong những giải pháp này?
Trải nghiệm, sử dụng của bạn hoặc bất kỳ liên kết nào liên quan đến chủ đề này được đánh giá cao.
// EDIT:
tôi có thể không có quyền trả một ví dụ xấu, các mã thực tế sẽ giống như là:
mCanvas = $("#jsonCanvas");
mMyPicture = new myPicture (mCanvas);
nơi get constructor myPicture là bối cảnh của phần tử canvas, và ném một lỗi, nếu mCanvas là không xác định.
Một ý tưởng hay là chỉ bao gồm javascript trên các trang yêu cầu nó và '$ (tài liệu) .ready' có thể được gọi nhiều lần trên một trang, vì vậy bạn nên an toàn ở đây. –
Bạn không cần kiểm tra xem phần tử có tồn tại hay không trước khi gán trình xử lý sự kiện nếu bạn đang sử dụng jQuery: '$ (" someselector "), nhấn (...)' sẽ áp dụng trình xử lý nhấp chuột cho các phần tử _zero hoặc more_ "someselector" phù hợp - nó không đưa ra lỗi nếu không có kết quả nào phù hợp. – nnnnnn
@IanBishop: Đó là tùy chọn ba :) -> tải js với mẫu @ nnnnnn: Xem chỉnh sửa của tôi, nhưng bạn nói đúng, liên quan đến hành động nhấp chuột 'duy nhất' –