2008-11-23 11 views
6

jquery के साथ शुरू करना और हैलो वर्ल्ड टाइप उदाहरण प्राप्त करने में परेशानी हो रही है asp.net mvc के लिए जा रहा है। इस स्क्रिप्ट के साथ एक पृष्ठ लोड करने का प्रयास करते समय मुझे एक रनटाइम त्रुटि "वस्तु अपेक्षित" मिलती है।एएसपी.नेट एमवीसी मास्टर पेज पर jquery कोड के साथ एक स्क्रिप्ट ब्लॉक कहाँ रखा जाना चाहिए?

ए। मास्टर पेज में स्क्रिप्ट टैग कहां रखा जाना चाहिए? बी। मैं गलत क्या कर सकता हूं? मेरे पृष्ठ में निश्चित रूप से "ए" तत्व हैं?

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script> 

      <script src="../Scripts/jquery.corner.js" type="text/javascript"></script> 

      <script type="text/javascript"> 
       $(document).ready(function() { 
        $("a").click(function(event) { 
         alert("Thanks for visiting!"); 
        }); 
       }); 
      </script> 

उत्तर

1

बी) मैं त्वरित परीक्षण पृष्ठ पर अपने इनलाइन स्क्रिप्ट की जाँच की और यह FireBug प्लगइन समस्या को खोजने के लिए स्थापित के साथ ठीक है, तो मैं सलाह फ़ायरफ़ॉक्स का उपयोग कर काम करता है:

  • Firebug के "स्क्रिप्ट" टैब में अपनी स्क्रिप्ट के हिस्सों को सम्मिलित करने और जांचने के दाईं ओर वॉच विंडो का उपयोग करें और देखें कि वे क्या लौटते हैं।
  • मैं घड़ी विंडो में $ डालने और जाँच अगर यह function() रूप में मान्यता प्राप्त है के साथ शुरू होता है: शायद jQuery propertly जुड़ा हुआ नहीं है
  • फिर घड़ी विंडो में $("a") रख दिया और जाँच सेट यह रिटर्न इसी आइटम की सही संख्या है अगर करने के लिए एक सेट में "एक" चयनकर्ता
  • रखें स्क्रिप्ट के कुछ हिस्सों में चल रहे जब तक आप कुछ गलत मुठभेड़
11

हममम ...

अपने पहले प्रश्न के उत्तर देने के लिए: वे <head> तत्व में रखा जाना चाहिए।

इसके अलावा, आम तौर पर मैं डीओएम में घटनाओं को डुबोते समय 'bind' method का उपयोग करता हूं (जैसा कि ऐसा लगता है कि आप ऐसा करने की कोशिश कर रहे हैं)।

तो, कोड दिखाई देगा:

$(document).ready(function() 
{ 
    // Bind each link to a handler: 
    $("a").bind('click dblclick', function(event) 
    { 
     alert('click'); 
    }) 
}); 

इसके अलावा, कुछ डिजाइन टिप्स (जब से तुम मेरे दिल (jQuery के साथ ASP.NET MVC) के करीब कुछ के साथ काम कर रहे हैं:

जोड़ें आपके मास्टर पेज के <head> तत्व के नीचे एक अतिरिक्त 'ContentPlaceHolder'। यह पृष्ठ के 'सिर' अनुभाग में पृष्ठ विशिष्ट जावास्क्रिप्ट को अपने उचित स्थान पर चलाने की अनुमति देगा: और यह आपको पृष्ठ- विशिष्ट जावास्क्रिप्ट में शामिल हैं।

I

<asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

क्यों उपयोगी है: t'll कुछ इस तरह दिखाई? मैं आपको बताउंगा: उस jQuery गोलाकार कोनों प्लगइन का उपयोग आप केवल कुछ पृष्ठों पर ही किया जा सकता है - इसे प्रत्येक पृष्ठ पर क्यों शामिल करें?

2

मैं स्क्रिप्ट में लिंक करने के लिए सामग्री प्लेसहोल्डर जोड़ने के लिए दान से सहमत हूं। हालांकि, आमतौर पर सिर को जावास्क्रिप्ट को प्रदर्शन के संदर्भ में रखने का सबसे अच्छा स्थान नहीं होता है। सबसे अच्छी जगह पृष्ठ के नीचे है। तो आपका एचटीएमएल आपकी जावास्क्रिप्ट से पहले लोड हो सकता है। Yahoo's YSlow tip देखें। हालांकि आपका कोड अभी भी मुख्य खंड में काम करना चाहिए।

मैं अपनी साइट की अधिकांश जावास्क्रिप्ट को एक फ़ाइल में रखना चाहता हूं और इसे सभी पृष्ठों में लिंक करना चाहता हूं। यदि यह बहुत बड़ा हो जाता है तो आप इसे कई फाइलों में विभाजित कर सकते हैं। यह ब्राउज़र के कैशिंग का लाभ उठाता है।

jQuery कोड के साथ क्या गलत है। मुझे यकीन नहीं है। यह बहुत सही दिखता है। एकमात्र चीज जो मैं सोच रहा हूं वह घटना पैरामीटर है। इसे पूरी तरह से बाहर ले जाने का प्रयास करें। मुझे पता है कि फ़ंक्शन को पैरामीटर की अनुमति है, लेकिन मैं आमतौर पर इसके बजाय "यह" उपयोग करता हूं। इसके अलावा, पैरामीटर का नाम बदलने का प्रयास करें।

+0

YSlow सिरे पर अच्छी कॉल । मुझे एहसास नहीं हुआ था कि स्क्रिप्ट समानांतर डाउनलोड ब्लॉक करते हैं। –

1

मास्टर पृष्ठ आमतौर पर /Views/Shared/Site.Master में संग्रहीत किया जाता है, जबकि लिपियों/स्क्रिप्ट में स्थित हैं तो ये:

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>    
<script src="../Scripts/jquery.corner.js" type="text/javascript"></script> 

<script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery.corner.js" type="text/javascript"></script> 

होना चाहिए, लेकिन मैं एक सहायक का उपयोग कर सुझाव है:

public static class Helper 
    { 
     private static string ScriptsRoot = "~/scripts/"; 

     public static string ScriptUrl (string scriptFile) 
     { 
      return VirtualPathUtility.ToAbsolute (ScriptsRoot + scriptFile); 
     } 
    } 

और फिर इस तरह अपनी स्क्रिप्ट को संदर्भित:

<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery-1.2.6.min.js") %>"></script> 
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery.corner.js") %>"></script> 
संबंधित मुद्दे