कैसे को रोकने के लिए जावास्क्रिप्ट समारोह में निष्पादित से घटना पर क्लिक करें?

वोट
0

मैं एक लंगर टैग कि पहले से ही है जब मैं एक और तत्व पर क्लिक करने के लिए मौजूद है ऑनक्लिक ईवेंट आवंटित करने के लिए कोशिश कर रहा हूँ। हालांकि, सब कुछ मैं कोशिश की है घटना का निष्कासन भी तुरंत काम के बाद में परिणाम लगता है। हम प्रोटोटाइप और Scriptaculous उपयोग कर रहे हैं।

इस समारोह है:

<script type=text/javascript>     
    function loadData(step, dao_id) {
        var div_id = 'div_' + step;
        var anchor_id = 'step_anchor_' + step;
        var prv = step -1;

        switch(step) {
            case 1:
                var action = 'major_list';
                break;
            case 2:
                var action = 'alumni_list';
                break;
            case 3:
                var action = 'alumnus_display';
                break;
        }

        new Ajax.Request('awizard.php', {
                method: 'get',
                parameters: {action : action, dao_id : dao_id},
                onSuccess: function(data) {
                    $(div_id).innerHTML = data.responseText;
                    //$(anchor_id).observe('click', loadData(prv, dao_id, true));
                    //Event.observe(anchor_id, 'click', alert('I executed'));

                    showStep(step);

                    //$(anchor_id).onclick = loadData(prv, dao_id, true);
                    //$(anchor_id).observe('click', loadData(prv, dao_id, true));

                }
            }
        )                   
    }

    function showStep(step, toggleBack) {

        var div_id = 'div_' + step;
        if(!toggleBack) {
            if(step != 1) {
                var prv = step -1;
                Effect.SlideUp('div_' + prv, { duration:1, delay:0 });
            }

            Effect.SlideDown(div_id, { duration:1, delay:1 });
            Effect.Appear('step_anchor_' + step, { duration:1, delay:2 });
        } else {

            var prv = step -1;
            Effect.SlideDown('div_' + prv, { duration:1, delay:0 });
            Effect.SlideUp(div_id, { duration:1, delay:1 });
            Effect.Fade('step_anchor_' + step, { duration:1, delay:2 });
        }               
    }
</script>

आप बता सकते हैं जैसा कि मैंने एंकर टैग करने के लिए onclick घटना बताए के बहुत से तरीके की कोशिश की है और उनमें से कोई ठीक से काम करते हैं। पहले तो मुझे मान लिया है कि एंकर टैग पर Effect.Appear समारोह onclick घटना फायरिंग किया जा सकता है, तो मैं showStep समारोह के बाद करने के लिए घटना काम आगे बढ़ कोशिश की, लेकिन है कि कोई फर्क नहीं किया। साथ ही, मैं तुरंत काम करने के बाद बंद () फ़ंक्शन को कॉल की कोशिश की लेकिन है कि या तो कोई फर्क नहीं किया।

मैं कर रहा हूँ मेरी दिमागी पर इस के साथ समाप्त। वहाँ मेरे लिए किसी भी तरह से घटना आग स्वचालित रूप से बिना एंकर टैग करने के लिए onclick घटना आवंटित करने के लिए है? मैं क्या गलत कर रहा हूं?

15/11/2008 को 15:25
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

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

इस कोड पर एक नज़र डालें:

$(anchor_id).observe('click', loadData(prv, dao_id, true));

यह क्या करता है यह कॉल करने के लिए "loadData" निरीक्षण कार्य करने के लिए का परिणाम गुजरती हैं। क्या आप क्या करना चाहते बजाय समारोह कॉल के लिए एक संदर्भ पार जाते हैं। आप इस के लिए कोड को बदलने के द्वारा आसानी से इसे ठीक कर सकते हैं:

$(anchor_id).observe('click', function() { loadData(prv, dao_id, true) } );
15/11/2008 को 15:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more