1057

イベントを発生させる要素の ID を取得する方法はありますか?

私は次のようなことを考えています:

$(document).ready(function() {
  $("a").click(function() {
    var test = caller.id;
    alert(test.val());
  });
});
<script type="text/javascript" src="starterkit/jquery.js"></script>

<form class="item" id="aaa">
  <input class="title"></input>
</form>
<form class="item" id="bbb">
  <input class="title"></input>
</form>

もちろん、イベントが最初のフォームから発生した場合は var に、イベントが 2 番目のフォームから発生した場合はtestid を含める必要があります。"aaa""bbb"

4

23 に答える 23

1376

jQueryevent.targetでは、イベントをトリガーした要素を常に参照します。ここeventで、関数に渡されるパラメーターはどこですか。http://api.jquery.com/category/events/event-object/

$(document).ready(function() {
    $("a").click(function(event) {
        alert(event.target.id);
    });
});

これも機能しますが、jQuery オブジェクトではないことに注意してくださいthis。そのため、jQuery 関数を使用する場合は、次のように参照する必要があります$(this)

$(document).ready(function() {
    $("a").click(function(event) {
        // this.append wouldn't work
        $(this).append(" Clicked");
    });
});
于 2008-09-07T19:02:37.010 に答える
183

参考にしてみてください!できます!

jQuery("classNameofDiv").click(function() {
    var contentPanelId = jQuery(this).attr("id");
    alert(contentPanelId);
});
于 2010-09-02T08:01:42.957 に答える
110

他の投稿でも言及されていますが、私はこれを綴りたいと思いました:

$(event.target).id未定義です

$(event.target)[0].idid 属性を指定します。

event.target.idid 属性も指定します。

this.idid 属性を指定します。

$(this).id未定義です。

もちろん、違いは jQuery オブジェクトと DOM オブジェクトの間にあります。「id」はDOMプロパティであるため、使用するにはDOM要素オブジェクトにいる必要があります。

(それは私をつまずかせたので、おそらく他の誰かをつまずかせた)

于 2012-11-06T13:38:16.900 に答える
100

jQueryだけでなく、すべてのイベントに使用できます

var target = event.target || event.srcElement;
var id = target.id

失敗した場合は、IEevent.targetにフォールバックします。event.srcElement上記のコードを明確にするために、jQuery は必要ありませんが、jQuery でも機能します。

于 2012-07-19T14:23:14.450 に答える
59

(this)関数を起動したオブジェクトを参照するために使用できます。

'this'(jQuery のコンテキストで) コールバック関数の内部にいるときのDOM要素です。たとえば、click、each、bind などのメソッドによって呼び出されます。

詳細については、こちらをご覧ください: http://remysharp.com/2007/04/12/jquerys-this-demystified/

于 2008-09-07T08:12:38.790 に答える
30

データベースから動的にテーブルを生成し、JSONでデータを受け取り、それをテーブルに配置します。すべてのテーブル行には一意IDのがあり、これは以降のアクションに必要です。したがって、DOMが変更された場合は、別のアプローチが必要になります。

$("table").delegate("tr", "click", function() {
   var id=$(this).attr('id');
   alert("ID:"+id);  
});
于 2011-09-12T14:14:16.360 に答える
22

eventプロパティにあるイベントを発生させた要素

event.currentTarget

イベントハンドラが設定されたDOMノードオブジェクトを取得します。


私たちが持っているバブリングプロセスを開始した最もネストされたノード

event.target

イベント オブジェクトは常にイベント ハンドラーの最初の属性です。例:

document.querySelector("someSelector").addEventListener(function(event){

 console.log(event.target);
 console.log(event.currentTarget);

});

イベント委任の詳細については、http://maciejsikora.com/standard-events-vs-event-delegation/を参照してください。

于 2016-10-14T13:04:43.523 に答える
13

jQuery オブジェクトとしてのソース要素は、次の方法で取得する必要があります。

var $el = $(event.target);

これにより、クリック機能が割り当てられた要素ではなく、クリックのソースが取得されます。クリック イベントが親オブジェクトにある場合に役立ちます。EG.テーブル行のクリック イベントで、クリックされたセルが必要です。

$("tr").click(function(event){
    var $td = $(event.target);
});
于 2012-03-22T15:41:23.727 に答える
12

これは、ほとんどのタイプの要素で機能します。

$('selector').on('click',function(e){
    log(e.currentTarget.id);
    });
于 2018-10-18T19:28:09.550 に答える
8

あなたは使用しようとすることができます:

$('*').live('click', function() {
 console.log(this.id);
 return false;
});
于 2012-11-03T17:40:44.633 に答える
5

これはz-index、上記の回答に記載されているイベント パラメータよりも高い値で機能します。

$("#mydiv li").click(function(){

    ClickedElement = this.id;
    alert(ClickedElement);
});

このようにしてid、(この例ではli) 要素の を常に取得します。また、親の子要素をクリックすると..

于 2013-11-09T19:58:29.707 に答える
4
var buttons = document.getElementsByTagName('button');
var buttonsLength = buttons.length;
for (var i = 0; i < buttonsLength; i++){
    buttons[i].addEventListener('click', clickResponse, false);
};
function clickResponse(){
    // do something based on button selection here...
    alert(this.id);
}

ここでJSFiddle を作業します。

于 2015-01-30T22:21:56.610 に答える
4

this参考書を使うだけ

$(this).attr("id")

また

$(this).prop("id")
于 2016-08-04T08:51:05.527 に答える
3

this.element.attr("id")IE8 で正常に動作します。

于 2013-06-04T07:47:15.833 に答える
2

これらの両方が機能し、

jQuery(this).attr("id");

alert(this.id);
于 2014-02-10T18:01:46.327 に答える