Tôi đang gặp sự cố khi trang tải quá nhanh, jquery chưa tải xong trước khi nó được gọi bằng tập lệnh tiếp theo. Có cách nào để kiểm tra sự tồn tại của jquery và nếu nó không tồn tại, hãy đợi một lát rồi thử lại?
Để trả lời các câu trả lời / nhận xét bên dưới, tôi đăng một số đánh dấu.
Tình hình ... trang chủ và trang con của asp.net.
Trong trang chủ, tôi có tham chiếu đến jquery. Sau đó, trong trang nội dung, tôi có tham chiếu đến tập lệnh cho từng trang. Khi tập lệnh của trang cụ thể đang được tải, nó sẽ phàn nàn rằng "$ không được xác định".
Tôi đặt cảnh báo tại một số điểm trong phần đánh dấu để xem thứ tự mà mọi thứ đang kích hoạt và xác nhận rằng nó sẽ kích hoạt theo thứ tự sau:
- Tiêu đề trang chính.
- Khối nội dung trang con 1 (nằm bên trong phần đầu của trang chủ, nhưng sau khi các tập lệnh trang chính được gọi).
- Khối nội dung trang con 2.
Đây là phần đánh dấu ở đầu trang chủ:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Reporting Portal</title>
<link href="~/Styles/site.css" rel="stylesheet" type="text/css" />
<link href="~/Styles/red/red.css" rel="stylesheet" type="text/css" />
<script type="text/Scripts" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/Scripts" language="javascript" src="../Scripts/jquery.dropdownPlain.js"></script>
<script type="text/Scripts" language="javascript" src="../Scripts/facebox.js"></script>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
Sau đó, trong phần nội dung của trang chủ, có thêm ContentPlaceHolder:
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
Trong trang con, nó trông giống như vậy:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Dashboard.aspx.cs" Inherits="Data.Dashboard" %>
<%@ Register src="../userControls/ucDropdownMenu.ascx" tagname="ucDropdownMenu" tagprefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<link rel="stylesheet" type="text/css" href="../Styles/paserMap.css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
***CONTENT HERE***
<script src="../Scripts/Dashboard.js" type="text/javascript"></script>
</asp:Content>
Đây là nội dung của tệp "../Script/Dashboard.js":
$(document).ready(function () {
$('.tgl:first').show(); // Show the first div
//Description: East panel parent tab navigation
$('.tabNav label').click(function () {
$('.tabNav li').removeClass('active')
$(this).parent().addClass('active');
var index = $(this).parent('li').index();
var divToggle = $('.ui-layout-content').children('div.tgl');
//hide all subToggle divs
divToggle.hide();
divToggle.eq(index).show();
});
});
<script src="...">
các thẻ đơn giản , điều đó không thể xảy ra. Bạn có đang sử dụng một cái gì đó như RequiJS hoặc LABjs không?
$(document).ready()
hoặc $(window).load()
? Chúng ta có thể xem một ví dụ?
type="text/Scripts"
để type="text/javascript"
, hoặc thoát khỏi nó tất cả cùng nhau nó không cần thiết nữa, cũng thoát khỏi language="javascript
. Cũng có thể bắt đầu thử mọi thứ.
$(document).ready(function(){...});
?