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

notセレクターを使用する

$('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

ただ、しないでください。

HTMLで明示的な属性を使用する特別な理由onclickがない限り(そして、私があなたが望む正当な理由を考えることができない場合)、単にを使用して$('a:not(.internal)').on('click', myfunction);ください。

于 2012-10-03T19:09:06.960 に答える
0

このパラメーターを関数に渡します

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 に答える