Как использовать API библиотек Google (jQuery) с Google App Engine? - PullRequest
0 голосов
/ 01 октября 2011

Я пытаюсь добавить эффект jQuery Hover на мой сайт.Вместо того, чтобы скачивать jQuery, я решил использовать API библиотек Google для jQuery.Я получил ключ и скопировал код, который идет в заголовок, затем скопировал jQuery для эффекта наведения, но ничего не происходит.Что я делаю неправильно? Здесь моя тестовая страница , а ниже - полный код и обработчик:

class JQueryTest(webapp.RequestHandler):
    def get(self):
        self.response.out.write("""<html>""")
        self.response.out.write("""<head>""")
        self.response.out.write("""<script type="text/javascript" src="https://www.google.com/jsapi?key=GOOGLE LIBRARIES API KEY"></script>""")

        self.response.out.write("""<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">

$("ul.thumb li").hover(function() {
    $(this).css({'z-index' : '10'}); /*Add a higher z-index value so this image stays on top*/ 
    $(this).find('img').addClass("hover").stop() /* Add class of "hover", then stop animation queue buildup*/
        .animate({
            marginTop: '-110px', /* The next 4 lines will vertically align this image */ 
            marginLeft: '-110px',
            top: '50%',
            left: '50%',
            width: '174px', /* Set new width */
            height: '174px', /* Set new height */
            padding: '20px'
        }, 200); /* this value of "200" is the speed of how fast/slow this hover animates */

    } , function() {
    $(this).css({'z-index' : '0'}); /* Set z-index back to 0 */
    $(this).find('img').removeClass("hover").stop()  /* Remove the "hover" class , then stop animation queue buildup*/
        .animate({
    marginTop: '0', /* Set alignment back to default */
            marginLeft: '0',
            top: '0',
            left: '0',
            width: '100px', /* Set width back to default */
            height: '100px', /* Set height back to default */
            padding: '5px'
        }, 400);
});
 </script>""")

        self.response.out.write("""<link type="text/css" rel="stylesheet" 
                                    href="/stylesheets/jquery.css" /> """)
        self.response.out.write("""<title>JQuery Test</title>""")
        self.response.out.write("</head>")
        self.response.out.write("""<body>""")
        self.response.out.write("""<div class="content">""")

        self.response.out.write("""
        <ul class="thumb">
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGIfcCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGIyGCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGIm1Cww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGM-dCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGM6dCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGIuGCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGLrzCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGLWlCww" alt="" /></a></li>
        <li><a href="#"><img src="http://ting-1.appspot.com/image?img_id=agZ0aW5nLTFyEAsSCEhvbWVQYWdlGLWlCww" alt="" /></a></li>
        </ul>""")

        self.response.out.write("""</div>""")
        self.response.out.write("</body></html>")

1 Ответ

3 голосов
/ 02 октября 2011

Вы не включаете свой код jQuery в $(document).ready(), поэтому DOM еще не существует в то время, когда вы пытаетесь присоединить обработчики. В общем, всякий раз, когда вам нужно сослаться на элементы DOM на странице (в отличие от простого определения функций, которые будут вызываться позже), вы должны обернуть все это в обратный вызов .ready(), чтобы он не работал, пока DOM не будет полностью загружен. Попробуйте это:

$(function() {
    $("ul.thumb li").hover(function() {
            // ...
        }, function() {
            // ...
        });
});

Это должно работать - это работает здесь: http://jsfiddle.net/nrabinowitz/gdsxH/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...