2013-03-01 10 views
7

मैं उस पृष्ठ की तरहकॉल onclick प्रोग्राम के रूप में विशेषता

<a href="#" id="001" onclick="fnaaa();" >...</a> 
    ... 
<a href="#" id="002" onclick="fnaba();" >...</a> 
    ... 
<a href="#" id="003" onclick="fncda();" >...</a> 


//sometimes maybe like this 
<a href="#" id="004" onclick="fnagg(); return false;" >...</a> 
    ... 

अब मैं आईडी क्वेरी स्ट्रिंग के रूप में पृष्ठ पर पारित किया है कुछ देखने पर <a> टैग का एक समूह है, तो मैं मूल रूप से की तरह कुछ करना चाहता था

$('a[id="' + id + '"]').click(); 
$('a[id="' + id + '"]').trigger("click"); 

यह उन दोनों की अनुमति नहीं है पता चला है, इसलिए यदि मैं आईडी होना, मैं कैसे समारोह है कि में लिखा है onclick विशेषता कॉल कर सकते हैं? मुझे पता है कि मैं इसे

var funcToCall = $('a[id="' + id + '"]').attr('onclick'); 

पर यह प्राप्त कर सकता हूं लेकिन मैं इस funcToCall को कैसे कॉल करूं? याद रखना कि funcToCall अधिक हो सकता है तो बस एक फ़ंक्शन नाम पूर्व। "fnagg(); झूठी वापसी;"

उत्तर

8

सबसे पहले, आईडी विशेषता some restrictions है, एक ऐसा है कि इसे एक पत्र से शुरू होना चाहिए। इसे ठीक करने के बाद, मैं इनलाइन onclick हैंडलर का उपयोग करके अनुशंसा करता हूं। ,

$("#ID_HERE").triggerHandler("click"); 

लेकिन अगर आप पूरी तरह बदसूरत onclick का उपयोग करना चाहिए, तो आप इसे like this आह्वान कर सकते हैं:

$("#ID_HERE").click(function(e) { 
    fnaaa(); 
    e.preventDefault(); 
}); 

तो आप आसानी से इसे ट्रिगर कर सकते हैं

<a id="foo" href="#" onclick="alert('test');">Test</a> 
var el = document.getElementById('foo'); 
el.onclick(); 
+0

धन्यवाद, वे मेरी असली आईडी नहीं हैं, मैं बस एक उदाहरण के लिए सरल बनाने की कोशिश कर रहा हूं। इसलिए लोग देख सकते थे कि मैं क्या करने की कोशिश कर रहा हूं - इनलाइन ऑनक्लिक विशेषता को गतिशील रूप से बुलाया जा सकता है जबकि केवल आईडी –

+0

को जानना है यदि आप अभी भी तत्व का चयन करने के लिए jQuery का उपयोग करना चाहते हैं (उदाहरण के लिए, यदि आप आधारित चुनना चाहते हैं आईडी के अलावा कुछ और), आप '$ (चयनकर्ता) [0] के साथ ऑनक्लिक हैंडलर को ट्रिगर कर सकते हैं। 0clon(); ' –

+0

मुझे ऑब्जेक्ट प्राप्त करना [ऑब्जेक्ट ऑब्जेक्ट] में jquery versioin $ (selector) के साथ कोई विधि' onclick 'नहीं है [0] .onclick(); –

3

आप उपयोग कर रहे हैं हैंडलर को बांधने के लिए onclick विशेषता। नीचे की तरह की कोशिश करो,

document.getElementById(id).click(); 

डेमो:http://jsfiddle.net/kpvKG/

+0

की अनुमति नहीं है - http://jsfiddle.net/kpvKG/1/ –

+1

@ScottSelby क्या देखें? मुझे लगता है, आपके पास उस डेमो में एक टाइपो है। विशेषता 'आईडी' की जांच करें .. उस डेमो में आपके पास 'id' के बजाय' d' है। –

0

DEMO

function fnagg() 
{ 
    alert('fired'); 
} 
$(function(){ 
    eval("var funcToCall=function(){"+$('#004').attr("onclick")+"}"); 
funcToCall(); 
}); 
+1

'eval' का उपयोग करना एक अच्छा अभ्यास नहीं है। हर कीमत से बचें। –

+0

@ वेगा, आप सही हैं, लेकिन यह एकमात्र तरीका है जिसे मैं एक फ़ंक्शन में स्ट्रिंग को लपेटने के बारे में जानता हूं जैसे प्रश्न पूछ रहा है। यह वास्तव में हमेशा बुरा नहीं है ... शीर्ष वोट किए गए उत्तर के अनुसार यहां: http://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea –

0

मैं कुछ इस तरह करना होगा:

एचटीएमएल

<a href="#" class="dynamicFuncs" id="my001" data-funcName="myFunc">test</a> 
के लिए 10

और जावास्क्रिप्ट

$(document).ready(function(){ 
    $(".dynamicFuncs").on('click', function(){ 
     var theFunc = $(this).attr('data-funcName'); 
     window[theFunc](); 
    }) 
}); 

var myFunc = function() { 
    alert('me'); 
}; 
-1

इसका सबसे अच्छा के लिए addEventListener उपयोग करने के लिए() आप घटनाओं के सभी प्रकार जोड़ सकते हैं। उदाहरण: "क्लिक करें", "mousemove" और कई और। अंत में झूठ घटना को रोकने के लिए डोम को घुमाने से रोकना है। यदि आप पैरेंट डोम ऑब्जेक्ट्स को क्लिक इवेंट प्राप्त करने से भी चाहते हैं तो इसे सही में बदलें। इस उदाहरण के लिए कोई जावास्क्रिप्ट पुस्तकालयों की आवश्यकता नहीं है। यह सिर्फ सादा पुराना जावास्क्रिप्ट है और हर ब्राउजर में काम करेगा जो अतिरिक्त जरूरत नहीं है।

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>exampe</title> 
    </head> 
    <body> 
     <a id="test" href="">test</a> 
    <script> 
     document.getElementById("test").addEventListener("click",function(){ 
      alert('hello world'); 
     },false); 
    </script> 
    </body> 
    </html> 

आप कॉल एक समारोह सिर्फ इस तरह समारोह नाम के 2 मान बदलने addEventListener है करना चाहते हैं।

document.getElementById("test").addEventListener("click",f1,false); 

इस समारोह

function f1(){ ... } 
संबंधित मुद्दे