2011-09-23 52 views
13

在很多情况下,我需要在加载后将行为绑定到元素,然后在事件触发后(如“更改”)。 我认为最好的办法是让它在同一条直线:Jquery:绑定加载+同时更改

$('#element_id').bind('load, change', function() { 
... 
}); 

但是,这仅适用于“变革”,而不是“负荷”。有一个更好的方法?

+0

我删除了逗号,但它无法正常工作。我认为在加载时会有一些限制 – max

回答

36

我碰到了同样的问题绊倒了。删除逗号是不够的,至少不会在这种情况下:

$(document).ready(function(){ 
    $('#element_id').bind('load change', function() { 
     ... // (this DOESN'T get called on page load) 
    }); 
}); 

我猜load事件$(document).ready()之前被触发。

这是一个简单的解决方案:

$(document).ready(function(){ 
    $('#element_id').bind('change', function() { 
     ... 
    }); 
    $('#element_id').trigger('change'); 
}); 
+0

即使这样也会使更改事件循环十亿次。不知道为什么。我尝试了这种方法和其他人,它只是想要循环。 –

+0

你是否在触发函数内的事件?它不应该循环,在某个地方肯定有错误。您可以尝试制作最小的错误案例并在单独的问题中发布代码;最有可能你会在点击“发布”按钮之前找出它。 :) – johndodo

+0

不在函数内部触发它。 $('#employeeDropDown')。on('change',function(event){var form = $(event.target).parents(“form”); form.submit(); })。trigger '更改');或者甚至当你把它放在上面时,都会导致它循环。 –

1

难道你只需要删除逗号?

+0

要添加:http://api.jquery.com/bind/ –

4

对于已经加载的内容,当你想运行事件的功能,也马上,你可以用你自己命名的自定义事件以避免触发内置事件中来自库等的任何现有绑定,例如

$(".my-selector").on("change rightnow", function() { 
    // do stuff... 
}).triggerHandler("rightnow");