jquery обработчик кликов внутри фрейма не работает - PullRequest
1 голос
/ 15 сентября 2010

Я не могу заставить следующий код прикрепить обработчик щелчка к элементам в «главном» фрейме.Этот код находится в определении набора фреймов.

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

1 голос
/ 15 сентября 2010

Вы не можете заглянуть внутрь DOM <frame> таким образом.Попробуйте это:

$('#main').contents().find('.confirmLink').click(function() { ... });

Теперь, даже если может иметь проблемы при некоторых обстоятельствах.Если страница во фрейме также импортирует jQuery, то вы можете сделать это:

$('#main').get(0).contentWindow.$('.confirmLink').click(function() { ... });

Это позволит использовать собственный jQuery фрейма для настройки обработчика.

0 голосов
/ 15 сентября 2010

Не проводя кучу исследований, я бы сказал, что это, вероятно, вопрос "готов к документам".Вы ждете родительский документ, но не рамочный документ.Родительский документ считается «загруженным» сразу по всем элементам этой страницы.Поскольку фреймы технически не являются частью страницы, а скорее сами по себе, они не рассматриваются.

Если у вас есть контроль над страницей, загруженной в фрейм, быстрым решением будет инкапсуляция вызова jQueryфункцию, а затем вызвать эту функцию на странице фрейма.

0 голосов
/ 15 сентября 2010

Вы пытались использовать #main в качестве контекста?

$(".confirmLink","#main").click(function(e) {('hi');});

или меняется $("#main").ready(fn) до $("#main").load(fn)

...