Safari:jQuery功能无法在加载ajax的内容中运行

时间:2011-06-08 07:59:01

标签: javascript jquery xhtml safari

我有一个页面dashboard.asp它会打开一个对话框并使用ajax加载... profile.asp

profile.asp内,有与配置文件功能相关的各种jquery函数。一切都很好,Safari不会在加载的内容中加载$(document).ready

第二个问题是我应该在加载ajax的页面以及父页面中加入<script src="jquery.js"></script>

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 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

更改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>

我想说保留在profile.asp页面中加载jQuery.js的引用是一个好主意,因为这样可以灵活地正常打开该页面(例如,不通过AJAX)并使其仍然有效

答案 2 :(得分:0)

哎呀!

我在加载了Ajax的内容中留下了<html><body>等等,这些内容搞得一团糟!

感谢您的回答,并在上下文中提出正确的建议。