2011-09-22 113 views
6

我被卡住了。搜索並嘗試了幾個小時。編輯: 我仍然不能使它的工作。好的,我只是把源代碼弄清楚我想完成什麼。如何使用jquery事件處理函數中的參數調用javascript函數?

<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

您希望myFunc在點擊時與在實例化時進行評估,是否正確? –

回答

8

使用jQuery的bind方法:

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

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

也看到我的jsfiddle

=== UPDATE ===

因爲jQuery的1.4.3,你也可以使用:

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

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

也看到我的第二個jsfiddle

===更新2 ===

每個功能都有自己的this。在此函數中調用clearFmtthis不再是單擊的元素。我有兩個類似的解決方案:

在您的函數中添加一個名爲例如element並用element代替$(this)

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

@mhd感謝您的更新,我也更新了我的答案。 – 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'來聲明任何函數,那麼不需要返回方法。只需像yourFunctionName1()一樣編寫你的函數。

in $ document.ready section參數不是問題。你只需把你的函數名稱放在這裏。如果你使用'anyFuctionName'函數,那麼你必須遵循上面的格式。

0

人們正在這個複雜的,簡單直接,你在Javascript將

MYFUNC( 「值」)調用;

相關問題