触发DOM加载的函数

时间:2012-08-30 14:54:51

标签: javascript jquery

我有这个小功能:

$('.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上的事件,但不会对其他事件造成任何损害或任何使得函数进入循环的事情呢?

2 个答案:

答案 0 :(得分:1)

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

// 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]));
});

Documentation for proxy

答案 1 :(得分: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');
});

您注意不要分配多个更改功能。否则,当更改事件发生时,所有这些都会被调用。