AJAX加载内容到DIV ..哪个页面拥有/控制什么?

时间:2013-11-13 20:26:12

标签: javascript jquery asp.net ajax

我正在使用jQuery load()函数将一些辅助ASPX页面中的内容带入主ASPX页面上的DIV。所讨论的内容包含按钮控件和标签控件,其中按钮的点击事件代码(驻留在辅助页面的代码隐藏中)随后将一些文本填充到标签控件中。辅助页面本身可以正常工作。

在主页面上,使用load()函数将按钮和标签带入DIV就好了。我想要了解的是加载内容的范围。它现在位于主页面的DOM中,在我看来它表明它在主页面的控制之下(如果这是正确的单词)。但是,单击该按钮会导致辅助页面“接管”,并刷新回辅助页面,并在标签中正确填充文本。这个结果表明在页面范围方面存在某种混合层次结构,特别是对于加载的按钮控件及其相关的点击事件。

是否有明确的规则或定义来定义这种关系?从编码包含load()'ed内容的页面的角度来理解它显然是至关重要的。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

HTML现在是主页面的一部分,因为jQuery .load()函数返回HTML而不是代码,并且HTML被注入到DIV中。辅助页面中的按钮单击代码不会传输到主页面,因此您需要在jQuery中连接单击事件处理程序,如下所示:

$('#TheButtonID').live('click', function () {
     // Your code here for handling a button click

});

OR

$('#TheButtonID').on('click', function() {
    // Your code here for handling a button click
});

注意:建议在jQuery的更高版本中使用.on(),但直到jQuery 1.9.x才会删除.live()


可以从jQuery .ajax()函数调用ASP.NET AJAX页面方法,但它无法在辅助.aspx页面中执行现有的单击事件处理程序代码,因为ASP.NET AJAX页面方法必须是静态的,因为它们可以跨页面边界调用代码,因为页面实例不存在。对于您来说,这可能是一个更好的解决方案,您必须将某些逻辑复制到静态方法中以供脚本调用,但请记住,您无法与任何页面控件进行交互,因为页面实例不存在。 / p>