【问题标题】:jquery getting id and appending .html & toggleClassjquery 获取 id 并附加 .html & toggleClass
【发布时间】:2013-03-17 13:22:04
【问题描述】:

我是 jquery 的新手,很乐意在这方面得到一些提示。我有几个链接,我想将它们的内容加载到我的#content div。我不使用href,所以我想加载id并附加.html(例如:第一个链接得到id="link1"。点击时我想将link1.html加载到#content div。)。此外,我想将点击链接的类别从非活动切换为活动,并找到上一个活动链接并将其更改为非活动。

这就是我尝试过的:

$(".link").click(function() {
    var linkHref = $(this).attr("id");
    var loadHref = linkHref.append(linkHref + ".html");
    $("#content").load(loadHref);
    $("#nav").find(".active").toggleClass("active inactive");
    $(this).children("a").toggleClass("inactive active");
});

HTML:

<ul id="nav">
    <li><a href="#" id="link1" class="active link">Link 1</a></li>
    <li><a href="#" id="link2" class="inactive link">Link 2</a></li>
    <li><a href="#" id="link3" class="inactive link">Link 3</a></li>
</ul>

输出:什么都没有发生。

【问题讨论】:

    标签: jquery load find append


    【解决方案1】:

    append 是 jQuery 对象的一个​​方法,attr 返回一个没有append 方法的字符串(一个字符串对象),如果你想连接字符串你应该使用+ 操作符。另请注意,您已将处理程序绑定到 a 元素而不是 li 元素,因此无需使用 children

    var linkHref = $(this).attr("id") + '.html';
    

    $(".link").click(function(e) {
        // Prevent the default action of the event
        e.preventDefault();
        var linkHref = this.id + '.html';
        $("#content").load(linkHref);
        $("#nav a.active").toggleClass('inactive active');
        $(this).addClass("active").removeClass('inactive');
    });
    

    【讨论】:

    • 啊,我明白了,现在事情越来越清楚了。非常感谢你!最后一件事:e.preventDefault();强制浏览器不导航到 a 标签中的 url,对吗?这就是我认为我得到了 href="#" 的原因。如果我没有这个,我会喜欢 href="link1.html" 并可以在我的内容中加载它。还是我错了?
    • @user2179266 欢迎您,是的,如果您使用preventDefault 方法,那么您可以使用href 属性而不是ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2012-12-29
    • 2019-03-21
    相关资源
    最近更新 更多