在许多情况下,我需要在加载后将行为绑定到元素,然后在事件触发(如“更改”)后再将其绑定。 我认为最好的方法是将其放在同一行中:
$('#element_id').bind('load, change', function () {
...
});
但是这只适用于“改变”而不适用于“加载”。有更好的方法吗?
在许多情况下,我需要在加载后将行为绑定到元素,然后在事件触发(如“更改”)后再将其绑定。 我认为最好的方法是将其放在同一行中:
$('#element_id').bind('load, change', function () {
...
});
但是这只适用于“改变”而不适用于“加载”。有更好的方法吗?
我遇到了同样的问题。仅仅移除逗号是不够的,至少在这种情况下是不够的:
$(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');
});
form.submit()
也可能会触发 change 事件。使用 console.log()
(或者如果你喜欢的话,JavaScript 调试器)来查看哪一部分正在循环。但是实际上,这与这个问题无关,你应该发布自己的问题。我可以向你保证,上面的答案中没有任何会导致它循环的东西 - 我经常使用它并且它有效。 - johndodobind
替换为on
,然后调用trigger
)。同时,根据文档,这是现在调用它的“正确”方式,不确定2011年时它读取的内容是什么。在ready
事件上调用load
被认为是不安全的,并且在动态加载脚本时不会运行。请参见:https://api.jquery.com/ready/ - oneWorkingHeadphone对于已加载的内容,当你想在事件上运行一个函数并立即执行时,可以使用自己命名的自定义事件来避免触发任何现有绑定(如来自库等)的内置事件,例如:
$(".my-selector").on("change rightnow", function() {
// do stuff...
}).triggerHandler("rightnow");
不要加逗号试试:
$('#element_id').bind('load change', function () {
...
});
你只需要移除逗号不就行了吗?