【问题标题】:jQuery syntax question (getting the ID of a link)jQuery 语法问题(获取链接的 ID)
【发布时间】:2009-12-07 11:14:12
【问题描述】:

我有一系列链接,每个链接都有自己的 id:

<li><a id="about" href="#">About</a></li>
<li><a id="call-us" href="#">Contact us</a></li>
<li><a id="home" href="#">Head on home</a></li>

而不是像这样写一系列语句:

$(document).ready(function(){
    $("a.about").click(function(event){
        $("#content").load("/data.html #about");
    });
    $("a.call-us").click(function(event){
        $("#content").load("/data.html #call-us");
    });
});

有没有办法抽象出这样一个事实,即当我单击带有“ajax”类的链接时,我会使用它的#ID,查看.data.html,然后从data.html 拉出带有id 的div #ID?

(我现在明白这并没有指定类,但假设我有 5 个锚点,例如

&lt;a href="#" class="ajax" id="UNIQUE-ID"&gt;Anchor Text&lt;/a&gt;

它肯定会使代码更易于维护。任何输入都会很棒。

【问题讨论】:

  • 我觉得我的回答太简单了,是我误解了你的部分问题吗?
  • 嗯,有时人们会问直截了当的问题 :) 我现在正在测试,但很快就会接受。谢谢!

标签: jquery html ajax


【解决方案1】:

是的,很容易:

$(document).ready(function(){
    $("a.ajax").click(function(e){
        $("#content").load("/data.html #" + this.id);
        e.preventDefault();
    });
});

【讨论】:

  • 酷! function(e) bit 是做什么的?
  • Alex, e 是传递给函数的“事件”对象。这让原来的行为被重新定义。
  • 如果您单击带有href='#'a 标记而不取消默认行为,页面通常会滚动到顶部或底部并将# 附加到url。你有function(event),它与function(e) 相同,但重要的部分是e.preventDefault()event.preventDefault(),它可以防止浏览器搞砸:)
【解决方案2】:

你可以给每个链接一个这样的类:

<li><a id="about" href="#" class="ajax">About</a></li>
<li><a id="call-us" href="#" class="ajax">Contact us</a></li>
<li><a id="home" href="#" class="ajax">Head on home</a></li>

但假设列表中的所有链接都需要这个点击处理程序,我会倾向于使用更简约的方法并给列表本身一个 ID:

<ul id="links">
  <li><a id="about" href="#">About</a></li>
  <li><a id="call-us" href="#">Contact us</a></li>
  <li><a id="home" href="#">Head on home</a></li>
</ul>

然后

$(function() {
  $("#links a").click(function() {
    $("#content").load("/data.html?id=" + this.id);
    return false;
  });
});

至于您对“/data.html id”的调用,我不确定“data.html”到底是什么,但通常您希望将 ID 作为 GET 或 POST 参数传递,就像我在上面所做的那样,但是什么你需要在这里做什么取决于你到底在打电话。

【讨论】:

  • 我理解这意味着他正在使用 jQuery 过滤结果的能力并且只使用一部分。所以data.html #about 将仅使用data.html 页面上带有id="about" 的元素的内容。
  • data.html 只是另一个包含我的旋转静态内容的页面。
  • @dcneiner,没错。我实际上在一个页面上有 10 个产品图标,当您单击一个时,描述(在 data.html 中,在
    中)将被加载到“登陆区域”div
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 2021-02-08
  • 2012-01-12
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多