Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery是否在未来的DOM对象上执行代码?_Jquery_Asp.net_Internet Explorer_Google Chrome_Css - Fatal编程技术网

jQuery是否在未来的DOM对象上执行代码?

jQuery是否在未来的DOM对象上执行代码?,jquery,asp.net,internet-explorer,google-chrome,css,Jquery,Asp.net,Internet Explorer,Google Chrome,Css,所以问题是: 我使用jQuery以DOM元素为目标,并根据浏览器窗口的高度、父元素等设置其高度。下面是一个示例: $('.multiPanelContainer .panelContainer').each(function() { $(this).css('height', document.body.offsetHeight - $(this).offset().top - 13 + 'px') }) 除了在页面就绪后AJAX调用引入新的DOM元素外,这一切都很好。我以前使用过live()

所以问题是:

我使用jQuery以DOM元素为目标,并根据浏览器窗口的高度、父元素等设置其高度。下面是一个示例:

$('.multiPanelContainer .panelContainer').each(function() { $(this).css('height', document.body.offsetHeight - $(this).offset().top - 13 + 'px') })
除了在页面就绪后AJAX调用引入新的DOM元素外,这一切都很好。我以前使用过live()将事件处理程序绑定到新的DOM元素,但这里我只想操作新元素的css。有没有办法在jQuery选择器的未来匹配中调用上述代码?我可以将jQuery绑定到应用程序后端的AJAX回发,只是想知道是否有一个简单的前端解决方案

背景如下:


整个情况并不理想。我正在使用一个现有的ASP.NET应用程序,该应用程序是针对IE6/IE7编写的,并广泛使用IE css的“expression()”语句。我没有做出那个决定,所以别怪我。无论如何,现在应用程序所有者希望能够在Chrome中使用该应用程序,而Chrome不理解所说的选择器。我的主管推荐的快速而肮脏的解决方案是将这些语句转换为您看到我在上面使用的jQuery语句,并将它们包含在母版页中链接的单个js文件中。我认为将设计拆分为css和js对可维护性来说是不好的,但我在这里只有这么多的控制权。

一旦DOM发生变化,您就必须重新执行代码。您可以通过使用新的类名标记已经完成的类来节省能源。

我认为您可以像这样使用live()处理程序。我想我已经很久没做了

$('.multiPanelContainer .panelContainer').live("load", function(e){ 
     // do your CSS change here. 
})

您可以将自定义事件附加到包含元素(例如body标记),并在需要时触发该事件(ajax调用或任何其他您可能需要的事件…)

顺便说一句,为什么不使用常规函数而不是匿名函数,并在使用ajax创建的新元素上调用它呢

$(document).ready(function() {
    do();
    $(document).ajaxComplete(function() {
        do();
    });
});

function do () {
    $('.multiPanelContainer .panelContainer').each(function() {
        $(this).css('height', document.body.offsetHeight - $(this).offset().top - 13 + 'px')
    })
}
每次Ajax请求完成时都会执行它