Saya mengalami masalah saat halaman dimuat dengan sangat cepat, sehingga jquery belum selesai memuat sebelum dipanggil oleh skrip berikutnya. Adakah cara untuk mengecek keberadaan jquery dan jika tidak ada, tunggu sebentar lalu coba lagi?
Menanggapi jawaban / komentar di bawah ini, saya memposting beberapa markup.
Situasi ... asp.net masterpage dan childpage.
Di halaman master, saya memiliki referensi ke jquery. Kemudian di halaman konten, saya memiliki referensi ke skrip khusus halaman. Ketika script khusus halaman sedang dimuat, ia mengeluh bahwa "$ tidak ditentukan".
Saya menempatkan peringatan di beberapa titik di markup untuk melihat urutan pengaktifan, dan mengonfirmasi bahwa pengaktifan dalam urutan ini:
- Header halaman master.
- Blok konten halaman anak 1 (terletak di dalam kepala halaman master, tetapi setelah skrip halaman master dipanggil).
- Blok konten halaman anak 2.
Berikut adalah markup di bagian atas halaman master:
<%@ 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>
Kemudian di badan halaman master, ada ContentPlaceHolder tambahan:
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
Di halaman anak, terlihat seperti ini:
<%@ 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>
Berikut adalah konten dari file "../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="...">tag sederhana , itu tidak dapat terjadi. Apakah Anda menggunakan sesuatu seperti RequireJS atau LABjs?
$(document).ready()atau $(window).load()? Bisakah kita melihat contohnya?
type="text/Scripts"menjadi type="text/javascript", atau singkirkan semuanya bersama-sama yang tidak diperlukan lagi, juga singkirkan language="javascript. Sebaiknya mulai mencoba sesuatu.
$(document).ready(function(){...});?