0

之前确实问过,但注意到了一些东西。有一个主页,它DIV使用以下代码将外部 PHP 加载到一个中:

$(document).ready(function() {
// Stuff to do as soon as the DOM is ready;
$('#content').load('pages/index.php');



// Handle Clicks
$('ul.nav li a').click(function() {
    var page = $(this).attr('href');

    $('#content').hide().load('pages/' + page + '.php').fadeIn('normal');



    //Wont Redirect
    return false;

});
// /

   });

页面加载正常DIV,但 JavaScript 正在播放。顶部的不起作用,底部的起作用。两者都使用

 $(function() {
 <script>

    $(function() {

        var target = $('.fademe');
        var targetHeight = target.outerHeight();
        $(document).scroll(function(e){
            var scrollPercent = (targetHeight - window.scrollY) / targetHeight;
            if(scrollPercent >= 0){
                target.css('opacity', scrollPercent);
            }
        });

    });

    </script>

    <script>
    $(function () {
        $.scrollUp();
    });
    </script>
4

2 回答 2

1

查看您的两个pastie文件,您似乎在fademe稍后加载的 HTML 中包含了带有类的 HTML 元素,而不是在最初在页面上的 HTML 中。因此,您的第一个函数将不起作用,因为 jQuery 不会找到任何具有fademe.

为了使您的功能正常工作,它需要包含在 load 中callback

$('#content').load('pages/index.php', function() {

    var target = $('.fademe');
    var targetHeight = target.outerHeight();
    $(document).scroll(function(e){
        var scrollPercent = (targetHeight - window.scrollY) / targetHeight;
        if(scrollPercent >= 0){
            target.css('opacity', scrollPercent);
        }
    });
});
于 2013-04-04T20:54:00.367 回答
0

似乎您正在将事件处理程序附加到一个不存在的(尚未)DOM 元素,因为您是一个 ajax 内容,所以默认情况下 ajax 是异步的,并且您的 DOM 还没有收到服务器响应。

您可以使用委托来附加事件处理程序,例如:

$('body').on('click', 'ul.nav li a', function() {
    var page = this.href;

    $('#content').hide().load('pages/' + page + '.php').fadeIn('normal');

    //Wont Redirect
    return false;
});

或将事件处理程序附加到 ajax 的成功回调函数上。

希望能帮助到你。

于 2013-04-04T21:22:08.830 回答