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>

ETC

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锚点只有一类。
  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 上的现场演示

编辑:再看一遍,由于与选择器匹配的类名必须至少包含一个破折号,因此可以将代码缩短为:

$('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 回答