2012-06-07 12 views
7

इस सवाल In Jquery, how can I tell between a programatic and user click?जावास्क्रिप्ट/jquery कैसे ट्रिगर और उपयोगकर्ता क्लिक के बीच अंतर करने के लिए?

की तरह समान दिखता है लेकिन मैं इसे पाने के लिए सक्षम नहीं हूँ, मेरे कोड

<div class="sample_class" onclick="sample_fn(arg1,arg2,arg3,arg4, e);" ></div> 
<div class="trigger_class" onclick="trigger_fn()></div> 


function sample_fn(arg1,arg2,arg3,arg4, e){ 
    console.log(e) ; 
    console.log(e.isTrigger); 
    console.log(e.hasOwnProperty('originalEvent')); 
} 


function trigger_fn(){ 
    $(".sample_class").trigger("click") 
} 
div.sample_class पर क्लिक करने पर ही

मैं कंसोल में हो रही है वस्तु अपरिभाषित झूठी

div.tigger_class पर क्लिक करने पर मैं कंसोल में एक ही चीज़ प्राप्त कर रहा हूं ऑब्जेक्ट अपरिभाषित झूठी

मैं इन दो क्लिकों के बीच अंतर करने में असमर्थ हूं। अग्रिम

धन्यवाद
+1

फिर आप एक क्लिक क्यों अनुकरण कर रहे हैं? एक नया फ़ंक्शन लिखें जो समान कोड साझा नहीं करता है। आप यह देखने के लिए कि क्या वे चाहते हैं [ईवेंट नेमस्पेसिंग] (http://docs.jquery.com/Namespaced_Events) या [कस्टम ईवेंट] (http://corymathews.com/jquery-custom-events/) पर भी पढ़ सकते हैं अपनी स्थिति में मदद करें। – Blazemonger

+1

आपके एचटीएमएल में आपके पास 'onclick = "tigger_fn()" 'है और जावास्क्रिप्ट में आपके पास' function trigget_fn()' है - टाइपो कुछ भी काम करने में मदद नहीं कर रहे हैं। अगर वे आपके वास्तविक कोड में नहीं हैं तो वे आपके प्रश्न में नहीं होना चाहिए। –

+0

टाइपो त्रुटि यहां सुधार की गई है .....दरअसल यह कोड – druveen

उत्तर

6

अद्यतन: jQuery 1.7+, घटना वस्तु (नीचे दिए गए कोड में e) के रूप में वस्तु एक संपत्ति e.isTrigger जो true है अगर घटना शुरू हो रहा है और अपरिभाषित था कि ट्रिगर नहीं नामित में शामिल होंगे; यह अनियंत्रित है इसलिए इसे उपयोग करने से पहले (demo) जांचें। यदि jQuery के पुराने संस्करण का उपयोग करते हैं, तो नीचे दिए गए कोड का उपयोग करें।


यह सिर्फ अपने कार्य करने के लिए एक ध्वज पारित करने के लिए आसान हो सकता है। स्क्रिप्ट

​$('#test').click(function(e, triggered){ 
    var msg = (triggered) ? ', triggered' : ''; 
    console.log('clicked' + msg); 
});​​ 

$('button').click(function(){ 
    // pass a true flag to the click function to indicate 
    // it's been triggered 
    $('#test').trigger('click', true); 
}); 

अद्यतन

एचटीएमएल

<button>Trigger a click below</button> 

<div id="test">Click Me</div>​ 

: डेटा-गुण मान्य JSON जो स्वचालित रूप से एक वस्तु (demo) में बदल जाता है हो सकते हैं:

यहाँ एक demo है
<div class="test" data-args='{ "quantity": 1, "type": "pizza", "extra1": "peperoni", "extra2": "cheese", "extra3": "cheesy bread" }'>Click Me</div> 

ध्यान दें कि data-arg JSON को रखने के लिए एक एकल उद्धरण का उपयोग करता है, लेकिन अंदर जेएसओएन प्रत्येक कुंजी और मान के चारों ओर डबल कोट्स का उपयोग करना चाहिए (जब तक कि यह संख्यात्मक न हो)। वैकल्पिक रूप से

var args = $(this).data('args'); 

, (demo) आप प्रत्येक तर्क के लिए एक अलग डेटा-विशेषता कर सकते हैं:

फिर डेटा विधि जानकारी निकालने के लिए उपयोग करने

<div class="test" data-quantity="1" data-type="pizza" data-extra1="peperoni" data-extra2="cheese" data-extra3="cheesy bread">Click Me</div> 

तब के सभी इकट्ठा का उपयोग तत्व से डेटा निम्नानुसार है:

var args = $(this).data(); 
+0

को ट्रिगर किया था, वास्तव में ऑनक्लिक फ़ंक्शन jquery का उपयोग करके बाध्य नहीं किया गया है। इसलिए यह मेरे मामले में आपकी डेमो को संशोधित नहीं करता है http://jsfiddle.net/hQAWv/। – druveen

+0

'ऑनक्लिक' का उपयोग करने की कोई आवश्यकता नहीं है, आप डेटा-विशेषताओं में विशिष्ट तर्क जोड़ सकते हैं और उन्हें इस तरह प्राप्त कर सकते हैं। – Mottie

+0

या [ऐसा करें] (http://jsfiddle.net/Mottie/hQAWv/1/): 'function trigger_fn (e) {test_fn (e, true); } ' – Mottie

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

  • कोई संबंधित समस्या नहीं^_^