0

私は次の機能を持っています

$('.link1-**number**').click( function() {
    $(".link2-**number**").hide()
});

link1- numberをクリックすると、link2- numberを非表示にしたいのですが、 numberが同じ値の場合に限ります。

ソー・ <a class="link1-1987">Link 1</a>
ハイド<a class="link2-1987">Link 2</a>

<a class="link1-1">Link 1</a>
隠す<a class="link2-1">Link 2</a>

<a class="link1-5">Link 1</a>
隠す<a class="link2-5">Link 2</a>

4

3 に答える 3

2

あなたの質問はあまりにも漠然としていますが、セレクターで始まるものを探していると思います:

$('a[class^="b-"]').click();

<a>で始まるクラスを持つすべての に一致しb-ます。

デモ

于 2013-02-11T03:32:17.513 に答える
2

あなたの編集に対する答え:

$('a[class^=link1]').click(function(){
    var number = this.className.split('-')[1];
    $('a.link2-' + number).hide();
});

デモ

次の場合にのみ機能することに注意してください。

  1. link1アンカーのクラスは 1 つだけです。
  2. そのアンカーには複数のハイフンがありません。
于 2013-02-11T04:08:10.757 に答える
1

@gdoron のセレクターを使用すると、次のようになります。

$('a[class^="link1-"]').click(function() {
    var className = $(this).attr('class');
    var i = className.indexOf('-');
    if (i >= 0) {
        var number = className.substring(i + 1);
        $(".link2-" + number).hide()
    }
});

注: これは、「link1-###」要素に単一のクラス名がある場合にのみ機能します。複数のクラス名をサポートするように拡張する必要がありますが、それでも「link1-###」クラス名を最初に指定する必要があります。

jsfiddle でのライブ デモ

編集:セレクターに一致するクラス名には少なくとも 1 つのダッシュが含まれている必要があるため、コードを次のように短縮できます。

$('a[class^="link1-"]').click(function() {
    var className = $(this).attr('class');
    var number = className.substring(className.indexOf('-') + 1);
    $(".link2-" + number).hide()
});
于 2013-02-11T04:08:38.557 に答える