jQuery load() 帮助

Posted

技术标签:

【中文标题】jQuery load() 帮助【英文标题】:Jquery load() help 【发布时间】:2010-04-01 12:06:36 【问题描述】:

我正在为 m 个个人网站创建一个投资组合页面。我有一个带有大约 20 个锚点的滑块,这些锚点链接到我从事过的项目,每个锚点都包含一个客户端徽标,单击该徽标应加载一些 html 内容,然后将该内容淡入同一页面上的容器 div 中。

有人建议我使用看起来很简单的 JQuery 方法 load()。我的问题是我是否必须为 20 个锚点中的每一个重复以下代码,因为每个锚点的 url 都不同,还是有更有效的方法?

$('a#project1').click(function() 
   $('#work').load('ajax/project1.html');

我还必须先使用 unload() 方法来确保我正在加载的 div 是空的吗?非常感谢。

【问题讨论】:

【参考方案1】:

如果你只是给锚一个href 和一个这样的类:

<a class="project" href="ajax/project1.html">Project 1</a>
<a class="project" href="ajax/project2.html">Project 2</a>

您可以对所有这些都使用这样的 jQuery:

$('a.project').click(function() 
  $('#work').load(this.href);


解决方案 2:如果您的链接在容器中,您可以稍微更改选择器并减少重复,如下所示:

<div class="projects">
  <a href="ajax/project1.html">Project 1</a>
  <a href="ajax/project2.html">Project 2</a>
</div>

你会用这个:

$('.projects a').click(function() 
  $('#work').load(this.href);

这两种方法的好处是,在禁用 javascript 的情况下,它们会稍微优雅地降级(取决于您的内容的外观),并且用户仍然可以通过单击链接看到内容。

【讨论】:

【参考方案2】:

要回答您的第二个问题,不,您不必使用卸载。正如load 的文档所解释的那样,它获取 URL 并将生成的 HTML 放入指定的容器中 - 就像您在工作 div 上执行了 .innerHTML 一样。

在最新的jQuery下,试试:

$('#slider-id').delegate('a', 'click', function() 
    $('#work').load(this.href);
);

如果使用 jQuery 1.3,请尝试:

// All anchors you want to be activated need to have the class workLink
$('a.workLink').live('click', functiON() 
    $('#work').load(this.href);
);

【讨论】:

@justkt- 如果不需要前一个函数的“活跃性”,delegatelive 与常规的 bind 相比是否存在某种开销? 为了回答这个问题,我们做了一些分析:ravelrumba.com/blog/event-delegation-jquery-performance

以上是关于jQuery load() 帮助的主要内容,如果未能解决你的问题,请参考以下文章

帮助为JQuery UI模式对话框设置Cookie

jquery load() 在使用 div 时获取参数的问题

jquery通过load获取文件的内容并跳到锚点的方法

Jquery中$.get(),$.post(),$.ajax(),$.getJSON(),$.getScript(),$.load()的用法总结

codeigniter 返回“消息:未定义的属性:Welcome::$load”试图加载帮助程序库

jQuery Ajax