मैं सोच रहा था कि केवल विशिष्ट पृष्ठों पर जावा-स्क्रिप्ट कोड निष्पादित करने का सबसे अच्छा तरीका क्या होगा।केवल विशिष्ट पृष्ठ पर जेएस निष्पादित करने का सबसे अच्छा तरीका
की कल्पना हम एक टेम्पलेट आधारित वेब साइट करते हैं, सामग्री IST सेट के लिए नियम, jQuery उपलब्ध पुनर्लेखन और यह मूल रूप से इस तरह दिखता है:
<!DOCTYPE html>
<html>
<head>
<script src="script.js"></script>
</head>
<body>
...
include $content;
..
</body>
</html>
सामग्री 'जानकारी' एक बटन होता है, हम चाहते हैं क्लिक पर होने वाली कुछ चीज़, सामग्री 'अलर्ट' को एक संदेश के रूप में देना चाहिए, जब आप टेक्स्ट फ़ील्ड होवर करते हैं।
त्रुटि में भाग दिए बिना, इन क्रियाओं को ट्रिगर करने का सबसे अच्छा तरीका क्या है, क्योंकि ऑब्जेक्ट नहीं मिला है?
विकल्प एक: का उपयोग कर window.location.pathname
$(document).ready(function() {
if (window.location.pathname == '/info.php') {
$("#button1").click(function(){'
//do something
})
}else if(window.location.pathname == '/alert.php'){
$("#mytextfield").hover(){
alert('message');
}
}
विकल्प दो: पता चल सके कि तत्वों मौजूद
$(document).ready(function() {
if ($("#button1").length > 0) {
$("#button1").click(function(){'
//do something
})
}else if ($("#mytextfield").length > 0){
$("#mytextfield").hover(){
alert('message');
}
}
विकल्प तीन: में स्क्रिप्ट शामिल लोड टेम्पलेट
//stands for itself
क्या उनका बेहतर समाधान है? या मुझे इन समाधानों में से एक के साथ मिलना है?
आपके अनुभव, उपयोग या इस विषय से संबंधित किसी भी लिंक की सराहना की जाती है।
// संपादित करें:
मैं एक बुरा उदाहरण चुना हो सकता है, वास्तविक कोड होगा किसी चीज़ की तरह:
mCanvas = $("#jsonCanvas");
mMyPicture = new myPicture (mCanvas);
जहां myPicture निर्माता प्राप्त कैनवास तत्व के संदर्भ है, और एक त्रुटि फेंकता है, अगर mCanvas अपरिभाषित है।
एक अच्छा विचार केवल उन पृष्ठों पर जावास्क्रिप्ट शामिल करना होगा जिनके लिए इसकी आवश्यकता होती है और '$ (दस्तावेज़) .ready' को पृष्ठ पर एक से अधिक बार कहा जा सकता है, इसलिए आपको यहां सुरक्षित होना चाहिए। –
यदि आप jQuery: '$ (" someselector ") का उपयोग कर रहे हैं तो ईवेंट ईवेंट को असाइन करने से पहले तत्व मौजूद है या नहीं। क्लिक करें (...) 'क्लिक करें हैंडलर _zero या more_ तत्वों पर लागू होगा मिलान "someselector" - अगर कोई मेल नहीं खाता है तो यह कोई त्रुटि नहीं देता है। – nnnnnn
@IanBishop: यह विकल्प तीन है :) -> टेम्पलेट के साथ लोड जेएस @ nnnnnn: मेरा संपादन देखें, लेकिन आप सही हैं, 'केवल' क्लिक करें क्रियाओं के बारे में –