我无法使以下代码将点击处理程序附加到“主”框架上的元素。此代码位于框架集定义中。
<!-- #include file ="..\include\AuthenticationCheck.asp" -->
<!-- #include file ="..\include\serverValidate.asp" -->
<html>
<head>
<meta NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
<title>Raider Writer Student Roll</title>
<script type="text/javascript" src="../include/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../include/js/jquery-ui-1.8.4.custom.min.js"></script>
<script type="text/javascript">
$(function(){//document ready
$("#main").ready(function () { //The function below executes once the iframe has finished loading
$("#main .confirmLink").click(function(e) {
alert('hi');
});
});
} );
</script>
</head>
<%
course_id=request("course_Id")
if ValidateNumber(course_id)=false then
err.raise 8,"Validation: <course_id> is Invalid","<course_id> is: " & course_id
End if
%>
<%session("currentpage")="tracking"%>
<frameset rows="100,*" border="0">
<frame name="banner" id="banner" scrolling="no" target="contents" src="rollbanner.asp?course_id=<%response.write(course_id)%>">
<frameset cols="16%,*" border="5">
<frame name="contents" id="contents" src="roll.asp?course_id=<%response.write(course_id)%>">
<frame name="main" id="main" src="../action/helpread.asp?dm=trackingdocs">
</frameset>
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</noframes>
</frameset>
</body>
</html>
答案 0 :(得分:1)
你不能以<frame>
的方式查看这个DOM。试试这个:
$('#main').contents().find('.confirmLink').click(function() { ... });
现在,即使可能在某些情况下也存在问题。如果框架中的页面也导入jQuery,那么你可以这样做:
$('#main').get(0).contentWindow.$('.confirmLink').click(function() { ... });
那将使用框架自己的jQuery来设置处理程序。
答案 1 :(得分:0)
您是否尝试使用#main
作为上下文?
$(".confirmLink","#main").click(function(e) {('hi');});
或改变
$("#main").ready(fn)
至$("#main").load(fn)
答案 2 :(得分:0)
如果不做一堆研究,我会说这可能是一个“准备好文件”的问题。您正在等待父文档,但不是框架文档。一旦该页面的所有元素被认为是“加载”的父文档。由于框架在技术上不是页面的一部分,而是一个页面本身,因此不予考虑。
如果您可以控制加载到框架中的页面,那么快速解决方法是将该jQuery调用封装在函数中,然后在框架页面中调用该函数。