2016-08-16 15 views
0

clickイベントでIDにIDを設定する必要があります。クラスと同じ名前にする必要があります。 たとえば、class = "x"の要素をクリックすると、この要素にid = "x"を設定します。クラス名を使用してIDを動的に設定する

私は、次のコードを使用していることを実行しようとしましたが、私は(たとえば$( 'X'))指定された要素に$(this)を変更すると、それは

$(this).click(function() { 
     if($(this).hasClass('x')){ 
      $(this).attr('id', 'x'); 
      console.log($(this).attr('id')); 
     } 
    }); 

動作しない、それはありませんクリックイベントは、クリックされたすべての要素で動作します。

+7

要素IDは、文書内で一意である必要があります。あなたのコードは、複数の要素に同じIDを適用しようとしていることを示唆しています。 – Phylogenesis

+3

初期セレクタの最初の 'this 'は何を参照していますか?どのような大きなコンテキストでこのコードを実行していますか? – David

+0

なぜこれを行う必要があるのか​​尋ねることはできますか?後で何かのためにIDを捕まえることができるかどうか関連性はありますか?ページに 'x 'クラスの要素が10個ある場合は、カウンターにIDを設定してlonutの答えを返すのが最適です。 – lharby

答えて

3

あなたのコードは次のようにする必要があります:

var count = 0; //added a count to have unique ids 
    $('.x').on('click', function(){ 
      count++; 
      if($(this).hasClass('x')){ 
       $(this).attr('id', 'x_' + count); 
      } 
    }); 

Idsが常に異なるものにする必要があります。あなたは同じ2つ以上のIDを持つことはできません。それはそれらを使うという全体のコンセプトで駄目です。

0

私が最初に賭けるのは$(this)で、あなたが実際にクリックしようとしているものではありません。ページのすべてのクリックをリッスンしてテストする場合は、リスナーをドキュメントに添付して、イベントターゲットをテストします。

$(document).click(function (e) { 
    var $target = $(e.target); 
    if ($target.hasClass('x')) { 
     $target.attr('id', 'x'); 
     console.log($target.attr('id')); 
    } 
}); 
+0

$( 'some-selector')の代わりに、クリックされた要素にイベントを処理したい – Roman

+0

@Roman私の回答を更新しました – Brian

0

は、私が理解することはよく分からないが、私は、リスナーが正しい選択でなければならないことだと思う、と試してみてください。

$('*').click(function() { 
    if($(this).hasClass('x')){ 
     $(this).attr('id', 'x'); 
     console.log($(this).attr('id')); 
    } 
}); 
+1

リスナをページのすべての要素に接続するのではなく、 'document'と – Brian

+0

$( '*')の代わりに、任意のイベントを処理する必要があります。クリックされた要素 – Roman

1

はあなたが短い形式で行うことができます

$(document).on('click', '.x', function() {$(this).attr('id', 'x');}); 

IDの目的は、ページ内の任意のドーム要素の識別です。は、それを上書きするか、別の要素

に同じ値を与えるのはよくないですだから私は、データ-id属性を使用することをお勧め代わりにIDの

$(document).on('click', '.x', function() { 
    $(this).attr('data-id', 'x'); 
    console.log($(this).data('id', 'x')); //for retrieve data-id 
}); 
関連する問題