ฉันมีปัญหาที่หน้าโหลดเร็วมาก jquery นั้นยังโหลดไม่เสร็จก่อนที่จะถูกเรียกใช้โดยสคริปต์ที่ตามมา มีวิธีตรวจสอบการมีอยู่ของ jquery หรือไม่และหากไม่มีอยู่ให้รอสักครู่แล้วลองอีกครั้ง
เพื่อตอบสนองต่อคำตอบ / ความคิดเห็นด้านล่างฉันกำลังโพสต์มาร์กอัปบางส่วน
สถานการณ์ ... asp.net masterpage และ childpage
ในมาสเตอร์เพจฉันมีการอ้างอิงถึง jquery จากนั้นในหน้าเนื้อหาฉันมีการอ้างอิงถึงสคริปต์เฉพาะหน้า เมื่อมีการโหลดสคริปต์เฉพาะของหน้ามันจะบ่นว่า "$ is undefined"
ฉันใส่การแจ้งเตือนในหลาย ๆ จุดในมาร์กอัปเพื่อดูลำดับการทำงานของสิ่งต่างๆและยืนยันว่ามันเริ่มทำงานตามลำดับนี้:
- ส่วนหัวของหน้าหลัก
- บล็อกเนื้อหาของหน้าย่อย 1 (อยู่ด้านในส่วนหัวของมาสเตอร์เพจ แต่หลังจากเรียกสคริปต์มาสเตอร์เพจแล้ว)
- บล็อกเนื้อหาของหน้าย่อย 2.
นี่คือมาร์กอัปที่ด้านบนของหน้ามาสเตอร์:
<%@ 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>
จากนั้นในเนื้อหาของหน้ามาสเตอร์มี ContentPlaceHolder เพิ่มเติม:
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
ในหน้าย่อยดูเหมือนว่า:
<%@ 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>
นี่คือเนื้อหาของไฟล์ "../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="...">
แท็กธรรมดาสิ่งนั้นจะไม่เกิดขึ้น คุณกำลังใช้บางอย่างเช่น RequireJS หรือ LABjs หรือไม่?
$(document).ready()
หรือ$(window).load()
? ขอดูตัวอย่างได้ไหม
type="text/Scripts"
เป็นtype="text/javascript"
หรือกำจัดมันทั้งหมดที่ไม่จำเป็นอีกต่อไปและกำจัดไฟล์language="javascript
. อาจเริ่มลองทำสิ่งต่างๆเช่นกัน
$(document).ready(function(){...});
?