2010-10-30 16 views
10

कहा जाता है, मैं तत्व पर एक फ़ंक्शन को ऑनक्लिक विशेषता के माध्यम से स्वयं कॉल कर रहा हूं क्योंकि मुझे php की गतिशील रूप से फ़ंक्शन पैरामीटर में कोई मान देने की आवश्यकता है। जब मैं फ़ंक्शन में कॉलिंग तत्व को "$ (यह)" के माध्यम से संदर्भित करने का प्रयास करता हूं, तो यह पूरी विंडो को संदर्भित करता है, न कि तत्व। मैं यह कैसे तय करुं?Jquery: उस तत्व का चयन करें जिसे फ़ंक्शन

+2

यह एक अच्छा सवाल है, और जब आपूर्ति किए गए उत्तरों कुछ कामकाज का सुझाव देते हैं, तो उनमें से कोई भी मूल प्रश्न को संबोधित नहीं करता है। मैं भी जवाब जानना चाहता हूं। वह क्लिक किए गए तत्व के बजाय $ (यह) के लिए विंडो क्यों प्राप्त करता है? –

उत्तर

6

मुझे संदेह है कि आपको वास्तव में इनलाइन onclick विशेषता का उपयोग करने की आवश्यकता है। आप विभिन्न तत्वों में एक तत्व में डेटा स्टोर कर सकते हैं। यह कहना मुश्किल है कि आप यह जानने के बिना कैसे करेंगे कि आपको क्या पैरामीटर पास करना है, लेकिन मैं कुछ उदाहरण दूंगा।

सबसे लचीला शायद एक data- विशेषता में होगा:

<a href="#" id="subject" data-type="fiction">Text</a> 

फिर आप निम्नलिखित तरीके से जानकारी का उपयोग कर सकते हैं:

$(document).ready(function(){ 
    $('#subject').click(function(){ 
     $type = $(this).data('type'); // this works as of jQuery 1.4.3, otherwise $(this).attr('data-type'); 

     // do your handling here, using $type 
    }); 
}); 

आप भी इस का उपयोग कर कक्षाएं, स्क्रिप्ट टैग कर सकता है जो वैश्विक चर, सभी प्रकार के तरीकों को बनाते हैं। यह onclick विशेषताओं में jQuery हैंडलर डालने से लगभग निश्चित रूप से बेहतर होगा।

19

कि तरह अपने कार्य करने के लिए एक पैरामीटर के रूप में अपने तत्व भेजने के लिए प्रयास करें:

<input type="text" onclick="myfunction(this);"></input> 

अपने कार्य किया जाना चाहिए:

<script> 
    function myfunction(currentElement){ 
    // ... 
    } 
</script> 
4

समाधान कस्टम विशेषता में एक गतिशील मान संग्रहीत करने के लिए है, एक ऑनक्लिक हैंडलर नहीं। एचटीएमएल स्पेक "डेटा-" से शुरू होने वाली किसी भी विशेषता को परिभाषित करता है क्योंकि इस तरह की चीजों के लिए बिल्कुल इस्तेमाल किया गया कस्टम डेटा, और यह spec में है, इसलिए यह मान्य होगा। तो अगर आप कुछ इस तरह कर सकते हैं (उदाहरण के लिए PHP का उपयोग, उसके अनुसार समायोजित):

<input type="text" id="some-input" data-some-dynamic="<?php echo $something; ?>"> 

फिर तो जैसे जावास्क्रिप्ट में पुनः प्राप्त:

$(document).ready(function() { 
    $('#some-input').click(function() { 
    // $(this) -- is the input element 
    // $(this).attr('some-dynamic-attribute') -- contains the dynamic data you need 
    }); 
}); 

मुझे लगता है कि विशेषता संचालकों का उपयोग कर के लिए इस विधि से बेहतर है ऑनक्लिक = "" की तरह, सरल, क्योंकि यह एक डिजाइन परिप्रेक्ष्य से अधिक ठोस है; चिंताओं को अलग करना और वह सब कुछ।

+0

अच्छी तरह से सोचा जवाब के लिए धन्यवाद। यद्यपि जरूरी नहीं कि मुझे क्या चाहिए, एक बहुत ही रोचक विधि। –

+0

एलन - यह उत्तर वही है जैसा कि एक अकेला व्यक्ति आपको वैकल्पिक विकल्प देता है। –

+0

इस उत्तर में मूल रूप से दो विकल्प थे, लेकिन चूंकि HTML5 अब सभी आधुनिक ब्राउज़रों के बीच समर्थित है, मैंने केवल "डेटा-एक्स" समाधान को शामिल करने के लिए उत्तर अपडेट किया है। –

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