jQuery效果选择器现在和将来都不会发生事件

jQuery效果选择器现在和将来都不会发生事件,jquery,Jquery,下面是一个示例用法,说明我正在尝试做的事情: $('img.switchToPng').each(function(){ currentSRC = $(this).attr('src'); $(this).attr('src', currentSRC.substr(0, currentSRC.length -3) + 'png'); }); 稍后使用ajax,一个新的出现在dom中,我希望它不需要重新运行选择器和每个函数。使用jQuery中的.on选择器可以

下面是一个示例用法,说明我正在尝试做的事情:

  $('img.switchToPng').each(function(){
       currentSRC = $(this).attr('src');
       $(this).attr('src', currentSRC.substr(0, currentSRC.length -3) + 'png');
  });
稍后使用ajax,一个新的
出现在dom中,我希望它不需要重新运行选择器和每个函数。使用jQuery中的
.on
选择器可以在未来继续使用,但是我找不到一种没有事件的方法来使用它。我可以使用
'load'
事件,但这并不可靠,因为浏览器缓存可能会阻止触发该事件


如果这是可能的,我可以看到许多用途。有人知道这个问题的好答案吗?

您有三个选择:

  • 轮询以创建新元素
  • 修改插入新元素的(jQuery)方法:

    var originalAppend = jQuery.fn.append;
    jQuery.fn.append = function() {
        // Function logic...
        return originalAppend.apply(this, Array.prototype.slice.call(arguments));
    };
    
  • 使用不推荐的方法

  • 你能给我解释一下或把我和1的更多信息联系起来吗?我没有遇到过这个概念。@我已经用注释代码链接了一个示例。摘要:保持轮询器(使用
    setTimeout
    setInterval
    )运行,检查是否存在与特定选择器匹配的元素。当找到这样的元素时,对其应用一些一次性函数逻辑,并附加一个identifier/flag/(data-)属性以将其标记为“toucted”。在以后的调用中,忽略设置了此属性/标志的元素。由于这是定期运行的,所以尽可能避免使用昂贵的jQuery,并使用普通的JavaScript。轮询听起来非常繁重。这让我希望javascript有线程。您可以推荐一种普通的javascript技术吗?我从jQuery开始,现在才深入了解真正的javascript。@Freshyeball我链接了一个示例,尝试创建一个自己的实现以供学习;)一旦完成,或者当你遇到麻烦时,不要犹豫寻求帮助。