0

動的に生成された Web ページにいくつかの a タグがあり、それらは次のようになっています

<a href='JavaScript:SWESubmitForm(document.SWEForm9_0,s_12,"s_9_1_35_1","1-3ZR4-1743")'  tabindex=997  id='s_9_1_35_1'>Add</a>

<a href='JavaScript:SWESubmitForm(document.SWEForm9_0,s_13,"s_9_1_36_1","1-3ZR4-1743")'  tabindex=997  id='s_9_1_36_1'>Cancel</a>

上記のような他のいくつか。テキスト「追加」のリンクがクリックされたときに、いくつかのロジックを実行する必要があります。方法の 1 つは、クリック イベントをタグに付けてから、テキストをチェックすることです。

$('a[href*="SWESubmitForm"]').click(function(){
if($(this).text() == "Add"){
//do something
}

しかし、これがこれを行う最も効率的な方法であるかどうかはわかりません。

これを行う正しい方法を提案してもらえますか?

4

3 に答える 3

1

コードは機能しますが、角かっこに問題があります。jsfiddleでテストしました

$('a[href*="SWESubmitForm"]').click(function(){
if($(this).text() == "Add"){
//do something
    alert('ok')}
});​
于 2012-02-19T05:36:06.080 に答える
1

これにはフィルターを使用できます。

これが「正しい方法」であるかどうかを知りたがっている別の回答に投稿したように、私はノーと言います。もちろん、正しい方法は、これらのリンクのそれぞれにクラスを割り当て、クラス セレクターを使用してクリック イベントをそれらにバインドすることです。しかし、HTML をあまり制御できないと仮定しています。

そうは言っても、以下で提案したようにフィルターを使用します。これにより、バインドされるイベントの数が最小限に抑えられます。さらに効率的にしたい場合は、代わりにdelegateorを使用onして共通の親にバインドします。これにより、バインドされたクリック イベントの数も減少します。

http://jsfiddle.net/mrtsherman/Uypuq/

$('a[href*="SWESubmitForm"]').filter(function() {
    if ($(this).text() == "Add") {
        return true;
    }
}).click(function() {
    alert();
    return false;
});​
于 2012-02-19T05:30:11.060 に答える
0

リンクIDが予測可能であり、HTMLに示されている場合は、次のように使用できます。

$('#s_9_1_35_1').click(function() {
    // put your code here
});

HTMLを制御する場合は、適切なIDまたはクラスを目的のリンクに配置し、それらからセレクターを使用することができます。これは、テキストに基づいてすべてのリンクをフィルタリングするよりもはるかに効率的です。

于 2012-02-19T05:33:19.837 に答える