Safari: функциональность jQuery не работает в содержимом, загруженном ajax - PullRequest
0 голосов
/ 08 июня 2011

У меня есть страница dashboard.asp Он открывает диалоговое окно и использует AJAX нагрузки ... profile.asp

В profile.asp имеются различные функции jquery, относящиеся к функциональности профиля. Все хорошо, принять Safari не будет загружать $(document).ready в загруженный контент.

Второстепенный вопрос: я должен включить <script src="jquery.js"></script> в страницу, загруженную ajax, а также в родительскую страницу.

Код в dashboard.asp

<script language="javascript">
    $(document).ready(function(){              
        $("a[rel=profile]").live('click',function() {                                 
            var profileURL = $(this).attr('href');
            var title = $(this).attr('title');
            $.ajax({
                url: profileURL,
                cache: false,
                success: function(data) {
                    $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
                    $("#overlayer").fadeIn();
                    $('#profile_menu_wrapper').load('/profile.asp',{a:title},function(){
                        $('#profile_menu_wrapper').fadeIn(1000);
                        $("#profile").html(data);
                        $("#profile").fadeIn(1000);                                                                              
                    });
                  }
            });                                   
            return false;
        });
    });
</script>

, который прекрасно работает и открывает диалог, как я хотел ...

Но код внутри profile.asp

<script language="javascript">
    $(document).ready(function(){
        alert("Ready")
    });
</script>

не запускается ...

Ответы [ 3 ]

1 голос
/ 08 июня 2011

Измените код в profile.asp следующим образом:

<script language="javascript">
    $(document).ready(InitProfileJqueryFunctionality);

    function InitProfileJqueryFunctionality() {
        alert("Some stuff");
    }
</script>

Затем измените код в Dashboard.asp, чтобы вызвать эту функцию на загруженной странице, если она существует.

<script language="javascript">
    $(document).ready(function(){              
        $("a[rel=profile]").live('click',function() {
            $("#profile").hide();                                     
            var profileURL = $(this).attr('href');
            var title = $(this).attr('title');
            $.ajax({
                url: profileURL,
                cache: false,
                success: function(data) {
                    $( 'html, body' ).animate( { scrollTop: 0 }, 0 );
                    $("#overlayer").fadeIn();
                    $('#profile_menu_wrapper').load('/profile.asp',{a:title},function(){
                        $('#profile_menu_wrapper').fadeIn(1000);
                        $("#profile").html(data);
                        $("#profile").fadeIn(1000);        
                        if (typeof(InitProfileJqueryFunctionality) != 'undefined')
                            InitProfileJqueryFunctionality();                                          
                    });
                  }
            });                                   
            return false;
        });
    });
</script>

Я бы сказал, что было бы неплохо сохранить ссылку на загрузку jQuery.js на странице profile.asp, так как это дает вам возможность открывать эту страницу в обычном режиме (например, не через AJAX) и работать по-прежнему. .

0 голосов
/ 08 июня 2011

Argh!

Я оставил <html><body> и т. Д. В загруженном Ajax-контенте, который все испортил!

Спасибо за ваши ответы, проголосовав за них, поскольку они были правильными в контексте.

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