在DOM加载时触发函数

trigger a function on DOM load

本文关键字:函数 DOM 加载      更新时间:2023-09-26

我有一个小功能:

$('.chrnumberpickerDiv select').change(function(){
    var sel = $(this),
    value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
    value.text(sel.find(':selected').text());
}).one('change');

我的问题是,我还需要在DOM加载时触发它。我尝试过.trigger('change')而不是.one('change'),但它似乎是循环的,从未停止刷新我的页面。那么,我可以做些什么来触发DOM上的事件,但又不会对其他事件造成任何损害,或者使函数进入循环?

如果我理解你的问题,你需要在选择更改时触发一个函数,以及在页面加载以填充初始值时以编程方式触发它:

// define the handler
var changeHandler = function() {
    var sel = $(this),
    value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
    value.text(sel.find(':selected').text());
};
// bind the handler
$('.chrnumberpickerDiv select').change(changeHandler);
$(document).ready(function () {
    // execute the handler on page load
    // use proxy to change what "this" means in the handler
    // (jQuery does this for you when you bind a handler through jQuery)
    $.proxy(changeHandler, $('.chrnumberpickerDiv select')[0]));
});

代理的文档

试试这个,而不是你的代码

$(document).ready(function() {
    $('.chrnumberpickerDiv select').change(function(){
        var sel = $(this),
        value = sel.closest('.chrnumberpickerDiv').find('.chrnumberpickerDivText');
        value.text(sel.find(':selected').text());
    }).one('change');
});

您必须小心,不要分配多个变更功能。否则,当更改事件发生时,所有这些都将被调用。