0

我正在使用 jQuery load() 函数将一些内容从辅助 ASPX 页面带入主 ASPX 页面上的 DIV。有问题的内容包含一个按钮控件和一个标签控件,以及按钮的单击事件代码(位于辅助页面的代码隐藏中),该代码随后将一些文本填充到标签控件中。辅助页面本身可以正常工作。

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

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

谢谢大家。

4

1 回答 1

2

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

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

});

或者

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

注意:建议.on()在以后的 jQuery 版本中使用,但.live()直到 jQuery 1.9.x 才被移除


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

于 2013-11-13T20:36:46.070 回答