Tôi đang cố gắng chọn tất cả các thẻ <script type="text/html">
trong một trang. Tôi sử dụng các thẻ <script>
để lưu trữ các mẫu HTML, tương tự như how John Resig does it. Đối với một số lý do, selector jquery sau dường như không được chọn bất cứ điều gì:vấn đề bộ chọn jquery với thẻ tập lệnh
$("script[type*=html]").each(function() {
alert("Found script "+this.id);
});
đánh dấu này nằm trong BODY của tài liệu HTML:
<body>
<script id="filter-search" type="text/html">
<dt>Search</dt>
<dd><input type="text"/></dd>
</script>
</body>
Tôi cũng đã cố gắng đưa nó vào phần đầu của tài liệu HTML và nó vẫn không được tìm thấy. Không có cảnh báo nào được hiển thị.
Nếu tôi thay đổi mã của tôi như thế này:
$("script[type*=javascript]").each(function() {
alert("Found script "+this.id);
});
Sau đó nó tìm thấy chỉ các script trong các HEAD có một src
đến một tập tin bên ngoài. Không tìm thấy tập lệnh trong trang thực tế. Ví dụ, những điều sau đây ĐẦU:
<head>
<script type="text/javascript" src="jquery.js" id="jquery"></script>
<script type="text/javascript" src="jquery-ui.js" id="ui"></script>
<script type="text/javascript" id="custom">
$(document).ready(function() {
$("script[type*=javascript]").each(function() {
alert("Found script "+this.id);
});
$("script[type*=html]").each(function() {
alert("Found TEMPLATE script "+this.id);
});
});
</script>
<script id="filter-test" type="text/html">
<dt>Test</dt>
</script>
</head>
<body>
<script id="filter-search" type="text/html">
<dt>Search</dt>
<dd><input type="text"/></dd>
</script>
</body>
tôi nhận được cảnh báo sau đây:
- Tìm thấy kịch bản jquery
- Tìm thấy kịch bản ui
Các custom
và filter-test
script trong HEAD không được chọn, cũng không phải là tập lệnh filter-search
trong thẻ body
.
Đây có phải là hành vi mong đợi không? Tại sao cai nay không hoạt động? Tôi có thể làm việc xung quanh nó, nhưng nó là gây phiền nhiễu mà nó không hoạt động.
EDIT: Hóa ra điều này thực sự hoạt động tốt bằng ví dụ trên. Trong tình huống của tôi, mã jquery nằm trong một mô-đun Javascript bên ngoài, và nó chắc chắn không hoạt động. Khi tôi chuyển mã vào một thẻ tập lệnh trên trang chính nó đã hoạt động. Tôi vẫn chưa tìm ra lý do tại sao nó sẽ không hoạt động trong các tập tin bên ngoài, nhưng sẽ báo cáo lại ở đây nếu tôi nhận được xung quanh để giải quyết nó tại một số điểm.
Nếu tôi chạy tập lệnh của bạn với jQuery 1.4.2 trên chrome, tất cả id mong muốn được thông báo – jAndy
@tauren Gần đây tôi đã gặp sự cố tương tự. Xin vui lòng bạn có thể thử một thử nghiệm: thay đổi văn bản/html để cái gì khác (đề nghị văn bản/mẫu) và xem nếu điều này sau đó làm việc với kịch bản bên ngoài của bạn ... – UpTheCreek