4

我正在尝试找到一种方法来从属性的<a>标记内调用 jQuery 语句。href我的代码如下所示:

<a href="javascript:$('#myElement').addClass('test');">

当我单击此链接时,浏览器 (Firefox) 会转到一个空白页面:

[object Object]

重要提示:我正在使用生成锚标记代码的第三方插件,因此我无权将代码添加到<a>标记的 onclick 事件中。我也不想在我们使用 AJAX 时将函数作为包装器引入语句。

有趣的是,这有效:

<a href="javascript:alert('test');">

jQuery 语句在属性中不起作用是有原因的href吗?它是导致问题的主要美元符号吗?有没有办法让它工作?

4

2 回答 2

3

URI的返回值javascript:是用于构成浏览器应该访问的页面的数据。

调用jQuery将返回一个 jQuery 对象。调用alert将返回undefined(被视为无内容响应)。

您可以将脚本包装在调用中void()(将返回值jQuery作为参数传递给它),但我真的建议整理底层系统,这样您就不必首先使用javascript:URI。

于 2013-09-09T16:50:54.317 回答
3

您可以通过将调用包装在一个函数中来解决此问题:

<a href="javascript:(function(){$('#myElement').addClass('test');})()">asdf</a>

但更好的选择是使用 javascript 点击事件:

<a href="#" onclick="$('#myElement').addClass('test');return false;">asdf</a>

甚至更好,连接到其他地方:

<a href="#" id="somelink">asdf</a>

jQuery(document).ready(function() {
    jQuery("#somelink").click(function() {
        $('#myElement').addClass('test');
        return false;
    });
});    
于 2013-09-09T16:56:53.253 回答