10

<a>ページに次のようなタグがたくさんあります

 <a href="#" id="001" onclick="fnaaa();" >...</a>
  ...
 <a href="#" id="002" onclick="fnaba();" >...</a>
  ...
 <a href="#" id="003" onclick="fncda();" >...</a>


 //sometimes maybe like this
 <a href="#" id="004" onclick="fnagg(); return false;" >...</a>
  ...

これで、id がクエリ文字列としてページに渡されたので、もともと次のようなことをしたかったのです。

$('a[id="' + id + '"]').click();
$('a[id="' + id + '"]').trigger("click");

どちらも許可されていないことが判明したので、id を持っている場合、onclick 属性に記述されている関数をどのように呼び出すことができますか? 私はおそらくこのようにそれを得ることができることを知っています

var funcToCall = $('a[id="' + id + '"]').attr('onclick');

しかし、これを funcToCall と呼ぶにはどうすればよいでしょうか? funcToCall は単なる関数名以上の可能性があることを思い出してください。"fnagg(); false を返す;"

4

5 に答える 5

10

まず、ID 属性にはいくつかの制限があります。その 1 つは、文字で開始する必要があることです。それを修正した後は、インラインハンドラーを使用しないことをお勧めします。onclick

$("#ID_HERE").click(function(e) {
  fnaaa();
  e.preventDefault();
});

次に、簡単にトリガーできます。

$("#ID_HERE").triggerHandler("click");

ただし、醜い onclick を絶対に使用する必要がある場合は、次のように呼び出すことができます。

<a id="foo" href="#" onclick="alert('test');">Test</a>
var el = document.getElementById('foo');
el.onclick();
于 2013-03-01T20:05:39.017 に答える
6

属性を使用しonclickてハンドラーをバインドしています。以下のようにしてみてください、

document.getElementById(id).click();

デモ: http://jsfiddle.net/kpvKG/

于 2013-03-01T20:09:30.613 に答える
0

デモ

function fnagg()
{
    alert('fired');
}
$(function(){
    eval("var funcToCall=function(){"+$('#004').attr("onclick")+"}");
funcToCall();
});
于 2013-03-01T20:15:56.900 に答える
0

私はこのようなことをします:

html の場合

<a href="#" class="dynamicFuncs" id="my001" data-funcName="myFunc">test</a>

そしてJavaScriptの場合

$(document).ready(function(){
    $(".dynamicFuncs").on('click', function(){
        var theFunc = $(this).attr('data-funcName');
        window[theFunc]();
    })
});

var myFunc = function() {
    alert('me');
};
于 2013-03-01T20:33:55.603 に答える
-2

addEventListener()を使用するのが最善です。すべてのタイプのイベントを追加できます。例: 「クリック」、「マウス移動」など。最後の false は、イベントが DOM ツリーをたどらないようにするためのものです。3 番目のプロパティを true に設定すると、イベントは引き続き DOM ツリーをトラバースし、親要素もイベントを受け取ります。これにより、 removeEventListener()を使用してイベントを追加するのと同じくらい簡単にイベントを削除できます。

イベントの追加

element.addEventListener(event, function, useCapture)

イベントの削除

element.removeEventListener(event, function, useCapture)

イベント: 必須。イベントの名前を指定する文字列。

機能: 必須。イベントが発生したときに実行する関数を指定します。

useCapture オプション。イベントをキャプチャ フェーズで実行するか、バブリング フェーズで実行するかを指定するブール値。

可能な値:

true - イベント ハンドラはキャプチャ フェーズで実行されます

false - デフォルト。イベント ハンドラーはバブリング フェーズで実行されます。

この例では、JavaScript ライブラリは必要ありません。これは単純な古い JavaScript であり、すべてのブラウザーで動作し、特別なことは必要ありません。

   <!DOCTYPE html>
    <html>
    <head>
    <title>exampe</title>
    </head>
    <body>
        <a id="test" href="">test</a>
    <script>
        document.getElementById("test").addEventListener("click", function(){
            alert('hello world');
        }, false);
    </script>
    </body>
    </html>

詳細については、次のリンクを参照してください。


JQuery メソッドを使用してクリック イベントを処理する場合は、次のようにします。

.click() の使用

$("#target").click(function() {
  alert("Handler for .click() called.");
});

詳細はこちら: https://api.jquery.com/click/

.on() の使用

$("#target").on("click", function() {
  console.log($(this).text());
});

詳細はこちら: http://api.jquery.com/on/

于 2014-08-27T16:42:25.763 に答える