通过使用jquery在多个锚点中单击锚点来获取href值

时间:2013-10-17 12:34:41

标签: javascript jquery html

我正在尝试在多个链接中获取href值或标记a.and我尝试使用此代码

var val;
$(document).ready(function() {
    $("a").click(function() {
        window.val = $(this).attr("href");
        alert(window.val);
    });

它适用于多个链接,并且位于本地文件内,这里很少有演示链接

<a href="sometext1">a</a>
<a href="sometext2">b</a>.....

但问题是我希望href值全局可用,因为我在其他文件中使用它。我的问题是如何使其全球化,或者还有其他方法可以做到这一点。

以及如何在不使用$(document).ready function的情况下编写我们自己的函数来处理同样的事情。

这一整个事情在一个html页面中,但我只想在其他html页面中使用href值,所以如果我们编写自己的js函数,我们可以在两个html页面中使用它。该函数应返回href。但在这里我不知道如何返回$(document).ready function。

3 个答案:

答案 0 :(得分:5)

您可以创建基于对象的变量:

var screen = {
    link:''
};

然后点击分配/访问:

$('a').on('click',function(){
    screen.link = this.href;
    alert(screen.link);
});

我主张将此变量分配给窗口...这样可以更多地控制。

注意我使用的是this.href而不是$(this).attr('href')。正如世界上最有趣的人所说,我并不总是使用香草JS,但是当我这样做时,速度提高了600,000倍。

编辑所以你想要摆脱$(document).ready()嗯?现在你冒险进入鲨鱼出没的纯香草JS水域。

var screen = {
    link:'',
    assignLink:function(href){
        screen.link = href;
        alert(href);
    }
},
links = document.getElementsByTagName('a');

if(window.addEventListener){
    for(i = links.length; i--;){
        links[i].addEventListener('click',function(){
            screen.assignLink(this.href);
        });
    }
} else {
    for(i - links.length; i--;){
        links[i].attachEvent('onclick',function(){
            screen.assignLink(this.href);
        });
    }
}

这只是它的翅膀,所以如果它不是完美的话,不要惹我生气,更重要的是要说明问题。看看为什么jQuery如此方便?所有额外的废话都是在后台完成的,所以你只需要处理$(document).ready()的负担而不必处理剩下的这类东西。

再次编辑所以......你想跨页面访问这个值吗?

var screen = {
    link:((localStorage['link'] !== null) ? localSorage['link'] : ''),
    setLink:function(href){
        screen.link = href;
        localStorage['link'] = href;
        alert(href);
    },
    getLink:function(){
        return screen.link;
    }
};

$('a').on('click',function(){
    screen.setLink(this.href);
});

localStorage的这种使用只是一个例子......如果你想让IE7工作,你可以得到更多精心设计或使用cookies,但这只是提供想法。您可以随时使用通过screen.setLink的{​​{1}}函数设置值,也可以随时使用href函数获取值。

答案 1 :(得分:0)

在外部声明val以使其成为全局,您可以使用函数内部的val来全局设置href

var val;
$(document).ready(function() {
    $("a").click(function(e) {
        e.preventDefault();
        val = $(this).attr("href");
        alert(val);
    });
});

jsfiddle

答案 2 :(得分:0)

看一下这个例子:

<!DOCTYPE html>
<html>
<head>
<title>Try jQuery 1.9.1 Online</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
var val;
$(document).ready(function() {
    $("a").on('click', function() {
        window.val = $(this).attr("href");
        alert(window.val);
        return false;
    });

    $("div").on('click', function() {
       alert (val);        
    });
});

</script>
</head>
<body>
<a href="sometext1">a</a>
<a href="sometext2">b</a>
<div>click here</div>
</body>
</html>

点击链接后,将设置a或b val 。单击div标签将提醒您当前 val 的参考。