Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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事件从aspx传递到ascx_Jquery_Html_Ajax_Asp.net 4.0 - Fatal编程技术网

将jquery事件从aspx传递到ascx

将jquery事件从aspx传递到ascx,jquery,html,ajax,asp.net-4.0,Jquery,Html,Ajax,Asp.net 4.0,我昨天开始使用ascx,并开始将我的“dynamic”default.aspx页面分割成更小的部分 在我的default.aspx中,我有很多处理不同事件的JavaScript/jquery代码。当我从.aspx中删除一些html代码,同时将javascript保留在default.aspx中,并将其放置在.ascx中时,jquery事件停止工作,我是否需要编写一些特殊的代码,以便我的javascript可以访问usercontrol中的html 谢谢 客户端JavaScript不知道ascx。

我昨天开始使用ascx,并开始将我的“dynamic”default.aspx页面分割成更小的部分

在我的default.aspx中,我有很多处理不同事件的JavaScript/jquery代码。当我从.aspx中删除一些html代码,同时将javascript保留在default.aspx中,并将其放置在.ascx中时,jquery事件停止工作,我是否需要编写一些特殊的代码,以便我的javascript可以访问usercontrol中的html

谢谢
客户端JavaScript不知道ascx。ascx在发送到浏览器之前包含在页面中,因此浏览器仅将其视为单个页面


JavaScript很可能因为找不到具有特定id或类的元素而停止工作。发生这种情况的原因可能有很多,例如元素实际上丢失了,或者.net动态更改了id。

我有一些包含用户控件的页面,其中也包含其他用户控件。 我对事件和具有这种结构的页面呈现堆栈也有同样的问题。为了解决这个问题,我将特定于用户控件的事件管理放在单独的.js文件(如mycontrol.js)中,并在.ascx文件中引用该.js(将指向它的链接放在那里)

我还遇到过这样一种情况,在将用户控件放置在标记(子控件)中之前,我没有呈现用户控件,因此无法将事件放置在该点上。我通过在javascript中加载用户控件javascript来处理此问题,因此:

/* function to allow inclusion of other files 
Included this way to allow addition AFTER the page renders the control - that is, fake inclusion in this file
*/
function includeJS(jsPath)
{
    var script = document.createElement("script");
    script.setAttribute("type", "text/javascript");
    script.setAttribute("src", jsPath);
    document.getElementsByTagName("head")[0].appendChild(script);
};
includeJS('Js/secondusercontrol.js');
  • 用户控件和用户控件内链接的单独脚本代码
  • 如果存在延迟问题,请使用脚本包含.js文件
  • 将所有“基本”脚本和全局对象(如果需要)放在page.js文件中
  • 使用.live()和.delegate()

编辑:一开始我忘记的另一个可能对您有用的选项是使用
.live()
和/或
.delegate()
功能。

考虑到当您将元素ID放入用户控件中时,元素ID会从Control1变为ctl00stuff\u Control1,还有:)在某些情况下,我通过使用类而不是id来解决这个问题。您似乎是对的,所有更改为:filter1_hmm这太糟糕了:)如果您使用jquery,一个脏的修复程序将在选择器中使用$(“[id$=lala]”)而不是$(“#lala”)。所有id似乎都是一样的:/所以id已经动态更改了?;-)