2010-02-10 63 views
1

我对Ajax有点新鲜,希望你们都能建议这两种方法中哪一种最有效。这两种方法似乎都行得通,但也许还有更好的办法呢?shadowbox通过jQuery.get()从另一个页面绘制的HTML显示

thisPage.html希望显示一个从thatPage.html(在同一主机上)绘制的html blob,以响应点击链接。我使用Shadowbox的html播放器来显示blob,并且我使用jQuery的get()作为XMLHttpRequest的快捷方式。

在我的第一个解决方案,thisPage.js包含此功能:

function loadEntry(entry){ 
    jQuery.get('thatPage.html', function(data){ 
    var elem = document.createElement("div"); 
    elem.innerHTML = "<div class='entry-to-show'>" + jQuery(data).find("a[name='" + entry + "']").parent().parent().html() + "</div>"; 

    Shadowbox.open({ 
     options: { 
     enableKeys: false 
     }, 
     player: 'html', 
     content: elem.innerHTML 
    }); 
    }); 
}; 

但转念一想,而不是让thisPage负荷thatPage每次loadEntry叫,我只是把它当一次thisPage。 JS被加载,包起来为包含一个jQuery对象的变量和访问它是这样的:

var $Content = null; 

jQuery.get('thatPage.html', function(data){ 
    $Content = jQuery(data).find("#content"); 
}); 

function loadEntry(entry){ 

    elem = $Content.find("a[name='" + entry + "']").parent().parent().html(); 

    Shadowbox.open({ 
    options: { 
     enableKeys: false 
    }, 
    player: 'html', 
    content: elem 
    }); 
}; 

这是第二种方法其实更有效,或者是有一些其他的办法,这将是更适合我”米试图做什么?任何建议或一般意见将受到欢迎。

感谢, jjon

回答

0

你的第二个方法是肯定更有效率。如果不了解更多关于通过从一个页面加载信息到另一个页面实际尝试解决什么问题,我不能提供更好的解决方案,尽管我无法想到任何您正在做的事情将是不适当的解决方案的情况。

+0

我很感谢您的回应。我试图解决的问题现在已经解决了,我猜,thatPage在独立页面中提供了一系列信息,但是我需要在本页的上下文中提供一些信息。我不想通过使用.load()和iframe或类似的东西来完成整个那个页面的格式和设计。数据只在html中,而不是在数据库或其他筒仓中,这种方法似乎(几乎)工作。它仍然有一点点皱纹,我还没有解决,现在我作为一个单独的问题发布。 – jjon 2010-02-11 15:32:01

相关问题