.load后调用函数(jQuery的).load后调用函数(jQuery的)(Calling fun

2019-05-12 05:04发布

有得到一个功能的.load后打电话到一点困难:

$(function(){
    $('a.pageFetcher').click(function(){
        $('#main').load($(this).attr('rel'));
    });
});

该页面加载,但功能不火:

$(function(){
    var $container = $('#container');
    $container.imagesLoaded(function(){
        $container.masonry({
            itemSelector: '.box',
    });
});
$container.infinitescroll({
    navSelector  : '#page-nav',
    nextSelector : '#page-nav a',
    itemSelector : '.box',
    loading: {
        finishedMsg: 'Nothing else to load.',
        img: 'http://i.imgur.com/6RMhx.gif'
    }
},
function( newElements ) {
    $.superbox.settings = {
        closeTxt: "Close this",
        loadTxt: "Loading your selection",
        nextTxt: "Next item",
        prevTxt: "Previous item"
    };
    $.superbox();
    var $newElems = $( newElements ).css({ opacity: 0 });
    $newElems.imagesLoaded(function(){
        $newElems.animate({ opacity: 1 });
        $container.masonry( 'appended', $newElems, true ); 
    });
}
);
});

我试图将它们结合起来,使第二函数被调用.load后(做这个网站的一些搜索和寻找答案给出/例子之后),但似乎没有正常工作。

建议?

Answer 1:

要在后运行一些代码.load()完成后,您将需要把代码完成功能的.load() 负载操作是异步的,因此加载功能开始内容的加载,然后立即返回,您的JS继续执行(加载完成之前)。 所以,如果你想在新加载的内容进行操作,它不会在那里呢。

当你的代码现在写的,你有两个代码块,当原来的HTML文档准备两种运行。 第一块开始.load()操作。 第二次行动预计.load()将已经完成,但还没有完成,因此从内容.load()操作尚未公布。

这就是为什么.load()需要完成的功能作为参数。 这是一个当负载完成将被调用的函数。 请参阅相关的jQuery的.load()文档获取更多信息。 这里是你的代码看起来就像一个完成的功能。

$(function(){
    $('a.pageFetcher').click(function(){
        $('#main').load($(this).attr('rel'), function() {
            // put the code here that you want to run when the .load() 
            // has completed and the content is available
            // Or, you can call a function from here
        });
        // the .load() operation has not completed here yet
        // it has just been started
    });
});


Answer 2:

您的参考第一点应该始终是jQuery的API ,这里就是在上.load()API页面告诉你的负荷函数需要的参数:

.load(处理程序(eventObject)传递)

.load([EVENTDATA],处理程序(eventObject)传递)

在这种情况下,你传递$(this).attr('rel')作为EVENTDATA,所以你以后添加事件处理程序:

$('#main').load($(this).attr('rel'), onNewMainContent);

在你的代码的第二块,你告诉jQuery的时候你的身体负荷,而不是当你装载更多的到您的网站来执行它。 您需要专门执行它,所以改变功能的启动:

function onNewMainContent {  // new
  var $container = $('#container');
  $container.imagesLoaded(function(){
    $container.masonry({
      itemSelector: '.box',
  // ...


Answer 3:

你也可以使用引导加载按钮来触发.load()和.load后的函数()

HTML

<button type="button" class="btn btn-primary btn-lg" id="refresh" data-loading-text="<i class='fa fa-spinner fa-spin '></i>Processing">Reload Emails</button>

JQUERY

 $("#refresh").click(function() {

    var $this = $(this);
    $this.button('loading');

    $("#container").load("/showemails.aspx?page=1 #container", function() {
         $("#refresh").button('reset');
      });

     return false;
  });


文章来源: Calling function after .load (Jquery)