0

我有一些通过读取一些 json 加载的 html 代码。在该数据中有一些链接。

我需要添加onclick="myfunction();"到这些链接的锚点。

由于我不希望更改任何其他链接,因此我已向所有内部链接(未导入的链接)添加了一个类。

我需要的是一些 jquery 可以做到这一点:

如果链接还没有去class="internal"然后添加 onclick="myfunction();"**

所以如果链接看起来像:

<a href="" class="internal">Click me</a>

然后什么也没做

但如果是这样:

<a href="">Click me</a>

然后改成这样:

<a href="" onclick="myfunction();">Click me</a>

我怎样才能做到这一点?

4

4 回答 4

3

使用选择器

$('a').not('.classname').click(function() { ... });
于 2012-10-03T19:07:47.723 回答
2

使用not伪选择器

$('a:not(".internal")').on('click', function () {
    // click handler code here
});
于 2012-10-03T19:08:05.287 回答
1

只是,不要。

除非您有非常具体的原因onclick在 HTML 上使用显式属性(而且我想不出您想要这样做的充分理由),否则只需使用$('a:not(.internal)').on('click', myfunction);.

于 2012-10-03T19:09:06.960 回答
0

将this参数传递给您的函数

onclick="myfunction(this);"


function myfunction(elem){
    if(elem.className == '' || elem.className !== 'internal') return;

}

或者您可以从 HTML 中删除您的事件并使用 jQuery 添加它。

<a href="">Click me</a> then it's changed to this: <a href="" >Click me</a>

$('body').on('click' ,  'a' , function(e) {

     if( e.target.className == '' || e.target.className !== 'internal') e.preventDefault();

     myfunction()
});

这只会添加点击事件

于 2012-10-03T19:09:02.093 回答