2017-12-11 14 views
0

クリックして要素のidを取得する必要があります。click(JS)で要素のIDを取得

私は

$('.not-filled-button').click(function() { 
    statusFilter(); 
}); 


function statusFilter() { 

    // var $rows = $('#table tr'); 
    alert($(this).get(0).id); 
} 

この関数を記述しようとした。しかし、私はボタンをクリックしたときに、私はこの

$('.not-filled-button').click(function() { 
    //statusFilter(); 
    alert($(this).get(0).id); 
}); 

すべて大丈夫

のようにそれを記述する場合、それは、アラート

undefinedを表示私はそれを1つの変種でどのように動作させることができますか?

+0

'$(この).ATTR(「ID」:あなたが呼び出します。すべては、あなたが直接メソッド参照を割り当てることができ、クリックすると次のようなstatusFilterであれば、コメントで述べました) ' –

+0

この要素を動的に追加する場合は、これらの回答はどれも有効になりません。あなたは代表団を使う必要があります。 – Andy

+0

@Andyセレクタに変更する必要があるのは唯一のものではないでしょうか?すなわち、 '$(' ')。on(' click '、' .not-filled-button '、function(){...}) ' – Nope

答えて

2

あなたが呼び出される関数にコンテキストを適用するには、この場合にはcallまたはapplyを使用することができます:あなたはこのようなパラメータとしてそれを渡してみてください。これと同様に:

$('.not-filled-button').click(function() { 
 
    statusFilter(this); 
 
}); 
 

 

 
function statusFilter(element) { 
 
    // var $rows = $('#table tr'); 
 
    alert(element.id); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="someButton" class="not-filled-button">click me</button>

または、:

$('.not-filled-button').click(function() { 
 
    statusFilter.apply(this); 
 
}); 
 

 

 
function statusFilter() { 
 
    // var $rows = $('#table tr'); 
 
    alert(this.id); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="someButton" class="not-filled-button">click me</button>


別の方法としては、これだけに似たパラメータとしての要素を渡すことができますとして

$('.not-filled-button').click(statusFilter); 
 

 

 
function statusFilter() { 
 
    // var $rows = $('#table tr'); 
 
    alert(this.id); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="someButton" class="not-filled-button">click me</button>

+0

'$( '。not-filled-button')。クリック(statusFilter);'で十分です。 'call()'や 'apply()'の必要はありません。 – Satpal

+1

@Satpalメソッドをクリックイベントの中に入れておけば、私はこれを代替として追加することもできます。 – Nope

2

statusFilterの内部thisコンテキストは異なるだろう、

$('.not-filled-button').click(function() { 
    statusFilter(this); 
}); 


function statusFilter(_this) { 
    alert($(_this).get(0).id); 
} 

それとも、単に機能statusFilter

$('.not-filled-button').click(function() { 
    statusFilter.bind(this)(); // Approach 1 
    statusFilter.call(this); // Approach 2 
    statusFilter.apply(this); // Approach 3 
}); 

にとのIDを取得するためにイベントリスナーのコンテキストを結合することができます単純に行うことができる要素です。

function statusFilter(_this) { 
    alert(_this.id); 
} 

イベントリスナーがstatusFilter以外の任意の他の関数呼び出しを含めるつもりはないされている場合は、あなたがちょうどすることができ、

$('.not-filled-button').click(statusFilter); 
+1

ありがとうございます。それは助けになる。 –

+0

@Satpal私はOPが持っているコードを遵守しようとしています。彼にもっと良いアプローチを提案しましょう。 –

+1

@SatpalもしOPがイベントリスナの中でこのような関数をもっと呼びたいとしたら? –

0

thisコンテキストが自動的にstatusFilter関数に渡されていません。

$('.not-filled-button').click(function() { 
    statusFilter(this); 
}); 

function statusFilter(elementReference) { 
    alert($(elementReference).get(0).id); 
} 
関連する問題