框架内的jquery单击处理程序无法正常工作

时间:2010-09-14 20:37:38

标签: jquery click frameset

我无法使以下代码将点击处理程序附加到“主”框架上的元素。此代码位于框架集定义中。

<!-- #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>

3 个答案:

答案 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调用封装在函数中,然后在框架页面中调用该函数。