2011-09-22 14 views
6

मैं अटक गया हूँ। खोज और घंटों के लिए कोशिश की।jquery इवेंट हैंडलर में पैरामीटर के साथ जावास्क्रिप्ट फ़ंक्शन को कैसे कॉल करें?

संपादित करें: मैं अभी भी इसे काम नहीं कर सकता। ठीक है, मैं सिर्फ यह स्पष्ट करने के लिए स्रोत कोड डालूंगा कि मैं क्या हासिल करना चाहता हूं।

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    var date_fmt="yyyy-mm-dd"; 
    var time_fmt="HH:MM"; 
    var date_field="#id_start_0, #id_end_0"; //id refering to html input type='text' 
    var time_field="#id_start_1, #id_end_1"; //id refereing to html input type='text' 


    function clearFmt(fmt_type) 
    { 
     if($(this).val() == fmt_type) { 
      $(this).val(""); 

     } 
    } 

    function putFmt(fmt_type) 
    { 
     if($(this).val() == "") { 
      $(this).val(fmt_type); 
     } 
    } 


$(document).ready(function() { 

    $(date_field).attr("title",date_fmt); 
    $(time_field).attr("title",time_fmt); 

    $(date_field).click(function() { 
     clearFmt(date_fmt); 
    }); 

    $(date_field).blur(function(){ 
     putFmt(date_fmt); 
    }); 

    $(time_field).click(function(){ 
     clearFmt(time_fmt); 
    }); 

    $(time_field).blur(function(){ 
     putFmt(time_fmt); 
    }); 

}); 
</script> 

सहायता?

+0

आप चाहते हैं कि मेरा फ़नक तत्काल पर क्लिक समय बनाम सही समय पर मूल्यांकन किया जाए, सही? –

उत्तर

8

उपयोग jQuery bind विधि:

function myfunc(param) { 
    alert(param.data.key); 
} 

$(document).ready(function() { 
    $("#foo").bind('click', { key: 'value' }, myfunc); 
}); 

इसके अलावा मेरे jsfiddle देखते हैं।

=== अद्यतन ===

के बाद से jQuery आप भी 1.4.3 का उपयोग कर सकते हैं:

function myfunc(param) { 
    alert(param.data.key); 
} 

$(document).ready(function() { 
    $("#foo").click({ key: 'value' }, myfunc); 
}); 

इसके अलावा मेरी दूसरी jsfiddle देखते हैं।

=== अद्यतन 2 ===

प्रत्येक समारोह अपने ही this है। इस फ़ंक्शन में clearFmt पर कॉल करने के बाद this अब क्लिक किए गए तत्व नहीं है। मेरे पास दो समान समाधान हैं:

अपने कार्यों में एक पैरामीटर जोड़ें उदा। element और $(this)element के साथ प्रतिस्थापित करें।

function clearFmt(element, fmt_type) { 
    if (element.val() == fmt_type) { 
     element.val(""); 
    } 
} 

समारोह आप पैरामीटर $(this) जोड़ने के लिए कॉलिंग।

$(date_field).click(function() { 
    clearFmt($(this), date_fmt); 
}); 

मेरे third jsfiddle भी देखें।

- = -

एक वैकल्पिक:

function clearFmt(o) { 
    if ($(o.currentTarget).val() == o.data.fmt_type) { 
     $(o.currentTarget).val(""); 
    } 
} 
$(date_field).click({fmt_type: date_fmt}, clearFmt); 

इसके अलावा मेरे fourth jsfiddle देखते हैं।

+0

@ एमएचडी आपके अपडेट के लिए धन्यवाद, मैंने अपना जवाब भी अपडेट किया है। – scessor

+0

बहुत बहुत धन्यवाद! मैं आपके तीसरे jsfiddle समाधान का उपयोग करें। – mhd

3

निम्नलिखित काम करना चाहिए इस live demo के रूप में देखा:

function myfunc(bar) { 
    alert(bar); 
} 

$(function() { 
    $("#foo").click(function() { 
     myfunc("value"); 
    }); 
}); 
0
function myfunc(e) { 
    alert(e.data.bar); //this is set to "value" 
} 

$("#foo").click({bar: "value"}, myfunc); 
0
anyFunctionName = (function() 
{ 
    function yourFunctionName1() 
    { 
     //your code here 
    } 

    function yourFunctionName2(parameter1, param2) 
    { 
     //your code here 
    } 

    return 
    { 
     yourFunctionName1:yourFunctionName1, 
     yourFunctionName2:yourFunctionName2 
    } 
})(); 

$document.ready(function() 
{ 
    anyFunctionName.yourFunctionName1(); 
    anyFunctionName.yourFunctionName2(); 
}); 

नोट: यदि आप किसी भी फ़ंक्शन घोषित करने के लिए 'AnyFuctionName' का उपयोग नहीं करते हैं तो किसी भी वापसी विधि की आवश्यकता नहीं है। बस अपना फ़ंक्शन लिखें, जैसे आपका फ़ंक्शनक्शन 1()।

$ document.ready सेक्शन पैरामीटर जारी नहीं है। आप बस अपना फ़ंक्शन नाम यहां डाल दें। यदि आप 'AnyFuctionName' फ़ंक्शन का उपयोग करते हैं तो आपको उपरोक्त प्रारूप का पालन करना होगा।

0

लोग इस जटिल, बस के रूप में आप जावास्क्रिप्ट में होगा

myfunc ("मान") सीधे कॉल कर रहे हैं;

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