загрузка jquery, если iframe не существует - PullRequest
0 голосов
/ 23 марта 2011

Как только я нажал один раз на оба элемента li (Google & Bing), я создал фреймы и могу выполнить поиск.

Теперь, как мне поступить, когда я снова нажму на li, чтобы проверить, есть ли уже iframe, чтобы я не перезагружал поиск? Имеет ли это смысл?

<HTML> 
    <HEAD> 
    <TITLE></TITLE> 
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js "></script>
            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js "></script>
    <style type="text/css">
    iframe {width: 100%;height: 100%;max-width: 850px;min-height: 890px;overflow-x: hidden;overflow-y: auto;}
    </style>
    </HEAD> 

    <body> 
                <div id="search_engines" class="tabs">  

     <ul>
                  <li><a href="#google" onclick="googleLoad();">Google</a></li>
                  <li><a href="#bing" onclick="bingLoad();">Bing</a></li>

          </ul>


        <div id="google">

            <a href="javascript: void(0)" onclick="googleLoad();" style="text-decoration: none" class="">New search</a>
            <script type="text/javascript">
            function googleLoad() {
            $("#googleIframe").html('<iframe id="googleLoad" frameborder="0" src="http:www.google.com"></iframe>'); 

            }
            </script>
            <div id="googleIframe"> 
            <!--Iframe goes here -->
            </div>
        </div>  

            <div id="bing">

            <a href="javascript: void(0)" onclick="bingLoad();" style="text-decoration: none" class="">New search</a>
            <script type="text/javascript">
            function bingLoad() {
            $("#bingIframe").html('<iframe id="bingLoad" frameborder="0" src="http:www.bing.com"></iframe>'); 

            }
            </script>
            <div id="bingIframe">   
            <!--Iframe goes here -->
            </div>
        </div>  

    </div>

    </body> 

    </HTML>

Ответы [ 3 ]

1 голос
/ 23 марта 2011

Самый чистый и семантический способ сделать это - прикрепить событие click с помощью функции jQuery .one() (вместо встроенного объявления onclick=).Таким образом, ваша функция выполняется после щелчка, и последующие щелчки не будут запускать процедуру загрузки снова.

<a id="myGoogleLink">Google</a>

, затем связать это с

$('#myGoogleLink').one('click', function(){
    $('#googleIFrame').html("BLAH");
});

Теперь, если вы переключалимежду Google и Bing IFRAME, это совершенно другая ситуация.

1 голос
/ 23 марта 2011

Просто добавьте эту проверку к своему коду:

function googleLoad() {
    if(!$('#googleLoad').length) {
        $("#googleIframe").html('<iframe id="googleLoad" frameborder="0" src="http:www.google.com"></iframe>'); 
    }
}

function bingLoad() {
    if (!$('#bingLoad').length) {
        $("#bingIframe").html('<iframe id="bingLoad" frameborder="0" src="http:www.bing.com"></iframe>'); 
    }
}
0 голосов
/ 23 марта 2011

Это будет делать то, что вы хотите:

if($('#googleLoad').length > 0) {
  // iframe with id googleLoad exists
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...