【发布时间】:2011-07-13 04:52:53
【问题描述】:
我有一个列表(菜单)。当用户点击链接时,我想用 ajax 加载内容。要加载的文章将根据链接 id 属性确定。
示例:
<ul class="ajaxMenu">
<li><a id="services">Services</a>
...
</u>
我存储文章链接的变量,与链接的 id 命名相同(即服务和 ajax 调用的 url 存储在 var services 上)
这行得通:
var services = "index.php?option=com_content&view=article&id=2&tmpl=component";
jQuery(".ajaxMenu > li > a ").click(
function(event) {
jQuery("#contentComponent").load(services);
}
);
由于这行代码 jQuery(this).attr("id") 给了我 id,我希望这会起作用 [它不起作用]:
var services = "index.php?option=com_content&view=article&id=2&tmpl=component";
var designs = "index.php?option=com_content&view=article&id=3&tmpl=component";
var contact = "index.php?option=com_content&view=article&id=2&tmpl=component";
jQuery(".ajaxMenu > li > a ").click(
function(event) {
jQuery("#contentComponent").load(jQuery(this).attr("id"));
}
);
我可以创建一个 if 或循环,遍历每个 var,(即 if jQuery(this).attr("id") == "services"...load(services))
但我怀疑我可以通过简单优雅的代码来实现这一点。
我怎样才能将 jQuery(this).attr("id") 转换为 .load() 函数,而不必对 jQuery(this).attr("id") 的值进行 if、循环等操作我存储要加载的 url 的命名变量?
【问题讨论】:
-
它不会那样工作,因为 attr 返回一个字符串“services”而不是变量 services。
-
请不要这样做。您正在使您的网站无法导航、无法搜索、无法添加书签;重塑框架集的所有最糟糕的功能。要正确执行此操作,您需要将
<a>链接指向真实文档以实现可访问性,然后使用 hash-navigation、History API 和 hashbang 链接作为备份通过页面内容替换来增强它。在您了解正确执行此操作(或为您执行此操作的预制脚本或插件)之前,您的基于内容的文档应单独保留load(),并坚持使用简单、可靠、可访问的链接。 -
@bobince 你认为答案能解决你提出的问题吗?
-
@Ibero:使用正确的链接可以解决一些但不是所有的可访问性/可用性问题。您现在可以右键单击-在新窗口中打开/书签/中键单击等,这是一个好的开始。您仍然会遇到无法在页面之间导航的后退/前进按钮,并且地址栏中没有任何内容可以为其他人添加书签或链接。
标签: jquery