2012-05-14 26 views
-2

レッツは、私が持っていると言う5要素からPHPクエリ(それが動的である) は、以下に例示する:jQueryの動的な要素からIDやクラスを取得

element 1 class=element id=id_1 
element 2 class=element id=id_2 
element 3 class=element id=id_3 
element 4 class=element id=id_4 
element 5 class=element id=id_5 

我々は彼らのを知ることによってjqueryのイベントを使用ussulayクラスまたはidですが、この場合、のIDはと正確には分かりません。 PHPクエリから動的な要素をどのように扱うか

$("#id_3").click(function() 
{ 
    //in this case we have known we want to add event when we click id_3 
}); 


たとえば、element 3id_3とクリックしたことをどのように知ることができますか?
$(????).click();には何を記入しなければなりませんか?
クラスを使用すると、どのように私がidクラスから参照したかを知ることができますか?

+0

と、未知の要素に取り組むとき、これはveryusefullです例えば、要素がdivであれば、$( "div")。click() 'を実行し、clickイベント内で' this.id'を使用してidの値を確認することができますその要素は... – Chase

答えて

0

これらのクラスがすべて同じクラスである場合は、クラスセレクタを使用できます。その後、thisを使用して、後にあるプロパティを探します。

$('.element').click(
    $(this).prop('id'); 
); 
0

クリックだけを追加したい場合は、それをサーバー側の生成されたHTMLに追加しないでください。

+1

これは、プレゼンテーションレイヤー(html/css)と実行レイヤー(js)を分離しようとするコンセプトに違反します。私はこれをお勧めしません。 – mrtsherman

0

attribute starsWithセレクタ& onを使用すると、動的に作成された要素にイベントをバインドできます。

$('body').on('click', '[id^=id]', function(e){ 

}); 
+0

ええと...私はちょうど更新しました... –

1

あなたの例ではすべてのエレメントが同じクラスを持っているので、あなたはそれに基づいて、セットアップあなたのイベントハンドラを次のことができます。

$(".element").click(function() { 
    // "this" refers to the clicked element 
    // this.id will be the id of the clicked element 
}); 

あるいは、これらの要素はAjaxを介してロードされているという意味で、ダイナミックであるかを「somecontainerelementは」理想的な動的要素が追加されていることを要素となりますが、できたでしょう

$("somecontainerelement").on("click", ".element", function() { 
    // do something with this.id 
}); 

:いくつかの時点で、最初のページロード後に委任イベントハンドラを使用しますちょうどdocumentである。

+0

私はこのソリューションが好きです。 'on'を使うことで、あなたのページにバインドされているイベントハンドラの数が減少しました。これは、あなたのJavaScriptの効率を向上させます。あなたが 'on'に慣れていないなら、読んでください。 http://api.jquery.com/on/。 =)! – mrtsherman

1

これは私が動作させるための唯一の方法でした。たとえば、属性IDまたはクリックされた要素の値を取得したい場合は...

$("containerElem").on("click", "someElemID", function(evt) { 
    var getElemID = $(evt.target).attr("id"); 
    var getVal = $(evt.target).val(); 
}); 
0

我々は、IDやクラス

$(document).ready(function() { 
    // user this if element is div 
    $('div[id^="id_"]').on('click', function() { 
    alert($(this).attr('id')); 
    }); 
    // user this if element is input 
    $('input[id^="id_"]').on('click', function() { 
    alert(this.id); 
    }); 

}); 
関連する問題