Javascript Jquery:bind load+;同时改变
在许多情况下,我需要在加载后,然后在事件触发后(如“更改”)将行为绑定到元素。 我认为最好的办法是按照同样的路线:Javascript Jquery:bind load+;同时改变,javascript,jquery,Javascript,Jquery,在许多情况下,我需要在加载后,然后在事件触发后(如“更改”)将行为绑定到元素。 我认为最好的办法是按照同样的路线: $('#element_id').bind('load, change', function () { ... }); 但这只适用于“更改”,而不适用于“加载”。有更好的方法吗?您不需要删除逗号吗?尝试不使用逗号: $('#element_id').bind('load change', function () { ... }); 我偶然发现了同样的问题。删除逗号是不够的,至少
$('#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');
});
对于已加载的内容,当您希望在事件上运行函数时,也可以直接使用自己命名的自定义事件,以避免触发内置事件上库等的任何现有绑定,例如
$(".my-selector").on("change rightnow", function() {
// do stuff...
}).triggerHandler("rightnow");
我删除了逗号,但它无论如何都不起作用。我认为Load会有一些限制,即使这会使更改事件循环10亿次。不知道为什么。我尝试了这个方法和其他方法,但它一直想循环。你是否触发了函数中的事件?它不应该循环,一定是某个地方出错了。您可以尝试在一个单独的问题中创建一个最小的错误案例并发布代码;最有可能的是,在点击“Post”按钮之前,您会找到答案。:)不在函数内部触发它$(“#employeeDropDown”).on('change',function(event){var form=$(event.target).parents('form”);form.submit();}.trigger('change');我想你是-
form.submit()
可能也会触发更改事件。使用console.log()
(或者JavaScript调试器,如果您愿意)查看哪个部分正在循环。但实际上,这与这个问题无关,你应该发表自己的观点。我可以向您保证,上面的答案中没有任何东西会使它循环-我经常使用它,而且它可以工作。自jQuery 3.0以来,Bind已被弃用,但它仍然工作得很好(只需将Bind
替换为on
然后调用trigger
。此外,这是“正确的”根据现在的文档调用此方法,不确定它在2011年读回了什么。在ready
事件上调用load
被认为是不安全的,并且在动态加载脚本时不会运行。请参阅: