jQuery attr href,为什么不起作用?

5
我认为下面这行代码应该没问题:$(".1").attr('href', '#Home'); 是吧?
但是,当我将它与另一个jQuery脚本集成时,为什么它不起作用呢?
$(window).bind("load", function() {
    $('.1').click(function() {
        $('.1').removeClass('tab1');
        $('.2').removeClass('active2');
        $('.3').removeClass('active3');
        $('.4').removeClass('active4');

        $('.1').addClass('active1');

        $('.2').addClass('tab2');
        $('.3').addClass('tab3');
        $('.4').addClass('tab4');

        $('#PortfolioMainContainer:visible').fadeOut("slow",function(){
            $('#TextContent').load('Home.html', function() {
                $(this).fadeIn("slow")
            });
            return false;
        }); 

        if(!$(".1").hasClass("ActiveTab1")) {
            $(".1").attr('href', '#Home');
            $('#TextContent:visible').fadeOut("slow",function(){
                $('#TextContent').load('Home.html', function() {
                    $(this).fadeIn("slow")
                });
                return false;
            });
        }
        $(".1").addClass("ActiveTab1");

        $(".2").removeClass("ActiveTab2");
        $(".3").removeClass("ActiveTab3");
        $(".4").removeClass("ActiveTab4");
    });
});

我想要澄清的是,当您点击具有类名为.1的div时,URL必须更改为http://www.websiteurl.com/#Home。 有人有想法如何使其工作吗?

6
不要使用整数作为类名。这是不合法的,如果这样做会受到惩罚 :) - Sampson
5个回答

6
我测试了以下语句,它们确实有效。
        $(function() {
            $("a").attr("href", "#123");
        });

如果我点击任何链接,无疑会在末尾附加#123。

我认为你的问题可能是,你的“.1”没有附加到锚对象上。在HTML规范中,只有超链接(以及一些与HTML无关的标签)具有“href”属性。这意味着,例如,你的.1实际上是一个<div class='.1'>,即使你将href属性放在它上面,它也不会像“超链接”那样具有任何默认行为。在这种情况下,你应该编程导航到指定的URL,例如:

$(".1").click(function(){
    window.location = "current/url" + "#home";
});

3
你可以使用document.URL来获取当前位置,因此
$(".1").attr('href', document.URL + '#Home');

问题在于document.URL将获取带有#和其他内容的URL,因此如果您在example.com/#work上,docuement.URL将返回'example.com/#work'。因此,您可能需要进行一些检查,或者如果您知道您在此脚本的静态URL上,您可以硬编码URL。

还有一件事,我可以看到您在检查后添加ActiveTab1类,因此除非它已经具有该类,否则不应进入该部分代码。


0

你需要添加命名空间 $("a").attr("xlink:href", "#123");


0
如果你的标签在iframe中,你无法通过jquery做任何事情。 尝试类似这样的操作console.log($(“.1”)。html());你会看到null

这与问题无关。并且被证明是错误的 - Fabrício Matté

0

你需要将当前位置添加到href属性中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接