【问题标题】:Using jQuery to change href after .load() call在 .load() 调用后使用 jQuery 更改 href
【发布时间】:2013-08-02 10:30:34
【问题描述】:

我对网页设计很陌生,但几个月以来我一直在努力学习一些基本知识来使用 html、css、JavaScript 等。我已经关注并尝试理解在 w3cschool 和其他介绍网站上找到的所有基本教程,html 中的结构和 css 样式都没有特别的问题,但现在我面临 JavaScript,这是问题所在,但让我先解释一下我正在努力实现的目标。

在我尝试构想的网站上,我创建了一个侧面板,其中必须包含一些标题和简短描述,这些文章取自另一个站点,具有另一个域。 由于我非常糟糕的经验和在网上找到的信息,我认为 jQuery 可以帮助我完成这项任务,尤其是它的 load() 方法。因此,在将标题所在的源页面的 .txt 格式保存后,我在文档的头部写了一个非常简单的代码:

$(document).ready(function() {
    $("#myDiv1 p").load("copyOfSite.txt .list a:eq(0)");
    $("#myDiv2 p").load("copyOfSite.txt .list a:eq(1)");
    $("#myDiv3 p").load("copyOfSite.txt .list a:eq(2)");
});

这工作正常,除了我调用的标题是指向另一个域的文章的相对链接,因此它们在我的网站中不起作用。

我尝试在加载方法的第二部分中指定一个函数,但我找不到将其他站点的域添加到我已加载的 href 属性的方法。我只实现了指定一个 url 或删除加载的 url 之类的东西

$(document).ready(function() {
    $("#myDiv1 p").load("copyOfSite.txt .list a:eq(0)",function(data){
        $(this).find("[href]").attr('href','http://www.articlesdomain.com')}
    )};

$(document).ready(function() {
    $("#myDiv1 p").load("copyOfSite.txt .list a:eq(0)",function(data){
        $(this).find("[href]").removeAttr('href')}
    )};

但在这两种情况下,我都无法调用已加载标题的 href 属性并附加到文章域。所以我想知道是否有办法实现它,或者我的任务方法是否完全错误。

提前致谢

【问题讨论】:

  • 使用 JavaScript 导航的最佳方式如下:location.href = "url";

标签: javascript jquery href attr


【解决方案1】:

您需要将协议和主机名添加到已经存在的相对 href 中,现在您正在用新的 url 替换整个 href。
使用一个函数来获取每个href,然后将主机名添加到已经存在的内容之前:

$("#myDiv1 p").load("copyOfSite.txt .list a:eq(0)",function(data){
    $(this).find("[href]").attr('href', function(_,href) {
        return 'http://www.articlesdomain.com' + href;
    });
)};

请注意,相对 href 应以 / 开头,否则您还必须将其添加到前置 url 的末尾

【讨论】:

  • 谢谢,现在可以正常工作了!...这就是问题所在!我正在努力理解 JavaScript 语法,但这是一个循序渐进的过程......
【解决方案2】:
 $(function () {
    $('a.something').click(function (e) {
        e.preventDefault();
    });

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 2011-09-26
    • 2013-05-01
    • 2021-09-07
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多