如何在jquery事件处理程序中调用带有参数的javascript函数?

2024-03-17

我被困住了。搜索并尝试了几个小时。

编辑: 我仍然无法让它发挥作用。好吧,我只是放源代码来明确我想要完成的任务。

    <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>

Help ?


使用jquerybind http://api.jquery.com/bind/ method:

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

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

另请参阅我的jsfiddle http://jsfiddle.net/7Bhpb/.

===更新===

从 jquery 1.4.3 开始你还可以使用:

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

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

另请参阅我的第二个jsfiddle http://jsfiddle.net/7Bhpb/1/.

===更新2===

每个函数都有自己的this。打电话后clearFmt在这个函数中this不再是被点击的元素。我有两个类似的解决方案:

在您的函数中添加一个名为的参数,例如element并替换$(this) with element.

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

调用函数必须添加参数$(this).

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

另请参阅我的第三个小提琴 http://jsfiddle.net/Qa7yP/.

-=-

替代:

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

另请参阅我的第四个小提琴 http://jsfiddle.net/Qa7yP/1/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在jquery事件处理程序中调用带有参数的javascript函数? 的相关文章

随机推荐