那么问题来了:
我使用 jQuery 定位 DOM 元素并根据浏览器窗口、父元素等的高度设置它们的高度。这是一个示例:
$('.multiPanelContainer .panelContainer').each(function() { $(this).css('height', document.body.offsetHeight - $(this).offset().top - 13 + 'px') })
这工作正常,除非 AJAX 调用在页面准备好后引入新的 DOM 元素。我之前使用 live() 将事件处理程序绑定(bind)到新的 DOM 元素,但我在这里只想操作新元素的 css。有没有办法在 jQuery 选择器的 future 匹配中调用上面的代码?我可以将 jQuery 绑定(bind)到应用程序后端的 AJAX 回发,只是想知道是否有简单的前端解决方案。
这是背景:
整个情况并不理想。我正在使用现有的 ASP.NET 应用程序,该应用程序是针对 IE6/IE7 编写的,并广泛使用 IE css 'expression()' 语句。我没有做出那个决定,所以不要怪我。无论如何,现在应用程序所有者希望能够在 Chrome 中使用该应用程序,它不理解上述选择器。我的主管推荐的快速而肮脏的解决方案是将语句转换为您在上面看到的我使用的 jQuery 语句,并将它们包含在母版页中链接的单个 js 文件中。我认为将设计拆分为 css 和 js 部分不利于可维护性,但我在这里只有这么多控制权。
最佳答案
一旦 DOM 发生变化,您将不得不重新执行代码。您可以通过使用新类名标记已经完成的任务来节省能源,这样您就可以跳过它们。
关于jQuery 在未来的 DOM 对象上执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353822/