2017-07-31 2 views
0

は、私は私の最初の行は、クラスedit1、第1 edit2などを有するであろう、そのクラスeditと定義された変数番号で識別されるのjQueryのテーブルの単一の行を選択するとの問題があります。クリックイベントが1つのテーブル行で機能していますか?

私の懸念は、テーブルの最後の行でクリックイベントを発生させることができ、私は明らかに理由を知ることができますが、実際にそれらの行を動的に選択する方法に関する情報は見つかりません。

私はこのような.each方法を試みた:

$('table tr').each(function(){ 
     $('.edit{{server->id}}').on('click', function(){ 
       $(this).attr("contenteditable", "true"); 
       $(this).addClass('form-group'); 
       $('div.editable').addClass('form-control'); 
       $('div.hidbtn').removeAttr('hidden'); 
     }); 
}); 

をそして、ここに私の{{server->id}}だけの行を作成するforeachから取られた最後の{{server->id}}を参照しているため、それは明らかに働いていません。

どのようにすれば、すべての単一の行を選択し、その1つ1つのクリックイベントを発生させることができますか?

スクリプト内のforeach?

私は道でLaravel 5.4を使用しています。..

これは、このような愚かな質問をもたらす可能性があればすみません。

ありがとうございます!

+0

は 'すべてのです.edit'イベントをそれぞれの ' tr'? – debute

+0

ここでイベントが発生していない場合は、イベントハンドラをアタッチしています。すべての要素にクリックハンドラを追加したい場合は、構造体に基づいて共通のクラスまたは別のセレクタを使用して選択します。クラス名に「ナンバリング」を付けることは、ややナンセンスです。 – CBroe

+0

クライアントは、いくつのループが作られたのか分かりませんが、 'tr'を数えることができます。 PHPの各行に対して 'on( 'click')'コードを生成するか、この目的のためにコードをエコーし​​て配列または 'id'を構築することができます。しかし、別のコメントで述べたように、クラスを使って要素を1つずつ選択することが決してない場合は、ジェネリッククラスの 'edit'に変更することができます。もしそうなら、2番目のジェネリッククラスを追加して、ハンドラをバインドするためにすべての要素を選択できるようにするのが良いでしょう。 – Kaddath

答えて

0

各trでテーブルを調べ、すべての行の内側にある.edit要素にイベントをバインドする必要がある場合は、その要素を「見つける」だけでイベントをバインドできます。

$('table tr').each(function(){ 
    $(this).find('.edit').on('click', function() { 
     ... 
    }); 
}); 
+0

私はこのようにしようとしましたが、私は変更が必要な値を変更していません:/ –

+0

'$(this).find( 'edit')のような要素を起動できます。 '$( 'table tr .edit')です。トリガー( 'クリック'); ''各 'なし。そして、あなたは言った。_私の心配は、最後の行でclickイベントを発生させることができるということです。だから多分この '$( 'table tr .edit')。last()。trigger( 'click');' '。 – debute

0

この

var id=1; 
$('table tr').each(function(){ 
    $('.edit'+id).on('click', function(){ 
     $(this).attr("contenteditable", "true"); 
     $(this).addClass('form-group'); 
     $('div.editable').addClass('form-control'); 
     $('div.hidbtn').removeAttr('hidden'); 
    }); 
    id+=1; 
}); 

さもないと、この
HTMLのように行うようにしてみてください: - jqueryの

<td onclick="clickFunctio()"></td> 

: -

function clickFunctio() { 
     $(this).attr("contenteditable", "true"); 
     $(this).addClass('form-group'); 
     $('div.editable').addClass('form-control'); 
     $('div.hidbtn').removeAttr('hidden'); 
    } 
+0

バインドされた関数からインクリメントを削除する必要があると思います。 'each'にある必要があります。 – Kaddath

+0

IDが '1,2,4,5'の場合、5番目の要素はID 3以降バインドされません行方不明の場合、 'each'はわずか4回実行されます。 – debute

関連する問題