1

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

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 函数的情况下工作。

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

4

3 回答 3

5

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

var screen = {
    link:''
};

然后点击分配/访问:

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

我提倡将变量分配给窗口……以这种方式进行更多控制。

请注意,我使用this.href而不是$(this).attr('href'). 正如世界上最有趣的人所说,我并不总是使用 vanilla 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- 工作,您可以得到更详细的信息或使用 cookie,但这只是提供一些想法。您可以随时使用screen.setLink传递 的函数设置该值href,也可以随时使用该函数获取该值screen.getLink

于 2013-10-17T12:39:45.317 回答
0

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

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

jsfiddle

于 2013-10-17T12:41:29.743 回答
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的当前引用。

于 2013-10-17T12:44:13.390 回答