我有这个小功能:
$('.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上的事件,但不会对其他事件造成任何损害或任何使得函数进入循环的事情呢?
答案 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]));
});
答案 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');
});
您注意不要分配多个更改功能。否则,当更改事件发生时,所有这些都会被调用。