javascript - 我如何向其中添加选择器更改事件?

标签 javascript jquery

这是我的 jquery,效果很好

$(document).ready(function(){
    $('#new_average, #max_occupancy').keyup(function(){
        factor = $(".industry_picker option:checked").attr("title");
        average = $('#new_average').val();
        if($('#new_average').val().indexOf("$") != -1){
            average = average.substring(1);                                                     
        }
        if($("#max_occupancy").val() != ""){
            max_occupancy = $("#max_occupancy").val();
            max_total = ((average * factor) * max_occupancy) * 30;
            if(factor != ""){
                $("#new_calc").val("$" + max_total + ".00");
            }

        }                                                   
    });
});

但问题是我需要它在按键和启动时触发

 $(".industry_picker") 

改变了......我知道我可以复制这个确切的功能并拥有一个

 $(".industry_picker").change 

但我觉得这是一个黑客......有没有更好的方法来拥有

$('#new_average, #max_occupancy").keyup 

$(".industry_picker").change  

在同一个选择器中或实现此目的的更好方法,而无需再次复制整个函数

最佳答案

不要使用匿名函数。

function myCallback(){
    factor = $(".industry_picker option:checked").attr("title");
    average = $('#new_average').val();
    if($('#new_average').val().indexOf("$") != -1){
        average = average.substring(1);                                                     
    }
    if($("#max_occupancy").val() != ""){
        max_occupancy = $("#max_occupancy").val();
        max_total = ((average * factor) * max_occupancy) * 30;
        if(factor != ""){
            $("#new_calc").val("$" + max_total + ".00");
        }

    }
}

$('#new_average, #max_occupancy').keyup(myCallback);
$('.industry_picker').change(myCallback);

旁注:您没有在任何地方使用var,这意味着只有一个副本每个变量的值:factoraveragemax_ocupancymax_total。引入全局状态是草率的编码,并使程序更难以维护和调试。 使用 var 声明变量。

推荐阅读:MDC var docs .

关于javascript - 我如何向其中添加选择器更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340168/

相关文章:

javascript - 将一些代码从 jQuery 重写为 Angular

javascript - 单击外部选择器触发事件

forms - Ajax表单提交、验证并返回成功或失败

Javascript 在实现时似乎跳过了一行(如果 count === 1)

javascript - 如何测试一个对象是否是 Angular 范围?

javascript - 从 url 下载文件 - Javascript ajax

javascript - Chrome 中的 CKEditor 输入模式问题

javascript - 使用jquery表中每个第二个td的值

javascript - 如何在 "new"中少写

javascript - bootstrap Tags-input[JS] - 无法在数据集中的建议列表中设置(或显示)多个数据