2010-07-30 10 views
10

कार्य करने के लिए कैसे मैं jQuery के

में एक समारोह के लिए $ इस (आत्म कीवर्ड) पारित कर सकते हैं
$(document).ready(function() { 

    $('.nav a').click(function() { 
     var direction = $(this).attr("name"); 
     submit_form($(this)) 
    }); 

    function submit_form(this) 
    { 
     // do some stuff with 'this' 
    }  
}); 
+4

आप इसे पहले से ही सही तरीके से करते हैं। 'Function submit_form (element) {} 'जैसे कुछ और फ़ंक्शन submit_form (this) {}' में चर का नाम बदलें। –

+1

कृपया जावास्क्रिप्ट का उपयोग जिस तरह से किया जाना था (पैरामीटर के रूप में संदर्भ पास करने की आवश्यकता नहीं है) का उपयोग करें: 'submit_form.call (this)', 'submit_form.apply (this) ', या यहां तक ​​कि jQuery का उपयोग करें यदि यह एकमात्र चीज है आप समझते हैं: 'jQuery.proxy (submit_form, यह)' –

उत्तर

16

$() में यह रैपिंग यह बनाता है एक jQuery वस्तु। आप

submit_form(this); 

function submit_form(obj) 
{ 
    // Work with `obj` as "this" 
    // Or wrap it in $() to work with it as jQuery(this) 
} 
+1

$ (महत्वपूर्ण बिंदु!) –

1

इस प्रयास करें:

$(document).ready(function() 
    { 
     $('.nav a').click(function() { 
      var direction = $(this).attr("name"); 
      submit_form(this); 
     }); 

     function submit_form(myObject) 
     { 
      // do some stuff with 'myObject' 


     }   

    }); 
0

जैसे कुछ ऐसा करना चाहते हैं बस इसे सामान्य चर के रूप में पास करें?

function submit_form(context) 
{ 
    context.html("Boo!"); 

} 

/// Then when you call it: 
submit_form($(this)); 
5

this कीवर्ड जावास्क्रिप्ट में सेट नहीं किया जा सकता है। यह स्वचालित रूप से जावास्क्रिप्ट द्वारा जेनरेट किया जाता है और "हमेशा उस कार्य के" मालिक "को संदर्भित करता है जिसे हम निष्पादित कर रहे हैं, या इसके बजाय, उस कार्य के लिए जो कार्य एक विधि है"।
http://www.quirksmode.org/js/this.html

अपने कोड में एक समस्या है (यह करने के लिए submit_form() फ़ंक्शन का पैरामीटर नाम करने की कोशिश कर) है। हालांकि, जिस तरह से आपका कोड निर्धारित किया गया है, यह स्पष्ट नहीं करता है कि आप एक jQuery ऑब्जेक्ट के रूप में लिपटे क्लिक किए गए एंकर के साथ या एंकर के लिए डोम नोड के रूप में पास करने का इरादा रखते हैं।

$(document).ready(function() { 
    $('.nav a').click(function() { 
     $anchor = $(this);      // Capture the jQuery-wrapped anchor for re-use; 'this' is an anchor because it matched $('.nav a') 
     var direction = $anchor.attr("name"); // $variable_name is a standard pattern in jQuery to indicate variables that are jQuery-wrapped instead of DOM objects 

     submit_form_jquery($anchor);   // Providing versions of submit_form function for passing either jQuery-wrapped object or DOM object 
     submit_form_dom(this);     // Pick the one you prefer and use it 
    }); 

    function submit_form_jquery($my_anchor) { // Function with well-named parameter expecting a jQuery-wrapped object 
     // do some stuff with '$my_anchor' 
     // $my_anchor here is assumed to be a jQuery-wrapped object 
    } 

    function submit_form_dom(anchor) {   // Function named expecting a DOM element, not a jQuery-wrapped element 
     // do some stuff with 'anchor' 
     // anchor here is assumed to be a DOM element, NOT wrapped in a jQuery object 
    } 
}); 

एक ज्यादातर असंबंधित नोट पर, आप शायद या तो return false; या event.preventDefault() का उपयोग करने के लंगर क्लिक किए गए पर href निम्नलिखित से पेज रखने के लिए चाहता हूँ। आप निम्नानुसार ऐसा कर सकते हैं:

$(document).ready(function() { 
    $('.nav a').click(function(event) { 
     event.preventDefault(); 
     // And now do what you want the click to do 
    }); 
}); 
1

यहां मेरे लिए क्या काम किया गया है।

$(document).ready(function() 
{ 
    $('.nav a').click(function() { 
     submit_form(this) 
    }); 

    function submit_form(thisObject) 
    { 
     var direction = $(thisObject).attr("name"); 
    }  
}); 
1

हाँ, इस आसानी से सेट किया जा सकता। Function.call() और Function.apply() देखें।

संबंधित मुद्दे