jQuery ready()发出-$(此)不可用,代码仅应用于一个元素

jQuery ready()发出-$(此)不可用,代码仅应用于一个元素,jquery,document-ready,Jquery,Document Ready,在DOM准备就绪时运行jQuery时,我遇到了一些问题 我有两个表单,每个表单都有一个,当我的代码运行时,应该加载到其他表单元素中 当用户第一次加载页面时,我希望这些选项可以随时从动作、加载目标等中获取某些属性,然后加载到中。在使用change时效果非常好,我可以在使用change时使用一个,但不能同时使用两者 HTML 1. 2. 3. A. B C JS 这适用于单个表单,但第二个表单无法加载 $document.readyfunction{ $'select.get'.readyfunct

在DOM准备就绪时运行jQuery时,我遇到了一些问题

我有两个表单,每个表单都有一个,当我的代码运行时,应该加载到其他表单元素中

当用户第一次加载页面时,我希望这些选项可以随时从动作、加载目标等中获取某些属性,然后加载到中。在使用change时效果非常好,我可以在使用change时使用一个,但不能同时使用两者

HTML 1. 2. 3. A. B C JS 这适用于单个表单,但第二个表单无法加载

$document.readyfunction{ $'select.get'.readyfunction{ var action=$'select.get'.parent.attr'action'; var target=$'select.get'。数据'target'; $+target.loadaction,$'select.get'.parent.serializeArray; }; 在ready函数中将select.get更改为this会导致两个表单都无法加载

使用变更对这两种形式都非常有效,尽管这有点重复

$'select.get'.changefunction{ var action=$this.parent.attr'action'; var target=$this.data'target'; $+target.loadaction,$this.parent.serializeArray; };
只需在pageload上触发更改事件

$('select.get').change(function() {        
  var action = $(this).parent().attr('action');  
  var target = $(this).data('target');  
  $('#'+target).load(action, $(this).parent().serializeArray());      
}).change(); //trigger it on pageload as well ...

只需在pageload上触发更改事件

$('select.get').change(function() {        
  var action = $(this).parent().attr('action');  
  var target = $(this).data('target');  
  $('#'+target).load(action, $(this).parent().serializeArray());      
}).change(); //trigger it on pageload as well ...
使用将代码应用于jQuery对象中的多个select元素。此外,正如注释所示,ready方法应保留给document对象

例如:

$(document).ready(function() {
    $('select.get').each(function(i) {
        var action = $(this).parent().attr('action');
        var target = $(this).data('target');
        $('#'+target).load(action, $(this).parent().serializeArray());
    });
});
请注意,在每个回调函数的每次迭代中,$this如何引用$'select.get'对象中的第i个元素。

使用将代码应用于jQuery对象中的多个select元素。此外,正如注释所示,ready方法应保留给document对象

例如:

$(document).ready(function() {
    $('select.get').each(function(i) {
        var action = $(this).parent().attr('action');
        var target = $(this).data('target');
        $('#'+target).load(action, $(this).parent().serializeArray());
    });
});

请注意,在每个回调函数的每次迭代中,$this是如何引用$'select.get'对象中的第i个元素的。

您的第一个代码段应如下所示:

$(document).ready(function(){
    $('select.get').each(function() {
        var action = $('select.get').parent().attr('action');
        var target = $('select.get').data('target');
        $('#'+target).load(action, $('select.get').parent().serializeArray());     
    }
);

将ready方法更改为each方法将为使用选择器找到的每个元素运行一次定义的函数。

如果您的第一个代码段如下所示:

$(document).ready(function(){
    $('select.get').each(function() {
        var action = $('select.get').parent().attr('action');
        var target = $('select.get').data('target');
        $('#'+target).load(action, $('select.get').parent().serializeArray());     
    }
);

将ready方法更改为each方法将为使用选择器找到的每个元素运行一次定义的函数。

您不应该调用。ready对文档以外的任何内容都没有意义。没错,文档只准备了一次。您是否检查了回调中的内容?因为事实是,.ready c完全忽略已选择的元素。从->中,只能对与当前文档匹配的jQuery对象调用.ready方法…您不应该调用.ready对文档以外的任何对象都没有意义。没错,文档只准备了一次。您是否检查了回调中的内容?因为事实是,.ready完全忽略选择的元素。从->中,.ready方法只能在与当前文档匹配的jQuery对象上调用…这非常好,甚至删除了准备好的一个,非常干净。谢谢这非常好,甚至删除了准备好的一个,非常干净。谢谢这非常好与adeneo的解决方案一起,尽管我同意他的方案,因为它消除了代码重复。也帮助我消除了对ready的误解。谢谢You@KieranFJ没问题。我也更喜欢adeneo的解决方案,因为在这种情况下,您已经将处理函数绑定到元素,所以触发它是有意义的。这与adeneo的解决方案,虽然我同意他的方案,因为它消除了代码重复。也帮助我消除了对ready的误解。谢谢You@KieranFJ没问题。我也更喜欢adeneo的解决方案,因为在这种情况下,您已经将处理函数绑定到元素,所以触发它是有意义的。