0

この関数は、menu-option-set のクラス内の -a's- を単純に検索し、クリックすると、「選択された」クラスを追加し、そのリスト内の他のすべてから「選択された」クラスを削除するように設定されています。

私がやりたいのは、単に「選択済み」のクラスを持つアイテムをクリックすると、「選択済み」のクラスが削除されるということです。「return false;」であってはならないことはわかっています。適切なコーディングがわからないので、プレースホルダーとして持っています。

みんなありがとう!:)

var $optionSets = $('.menu-option-set'),
    $optionLinks = $optionSets.find('a');

$optionLinks.click(function() {
    var $this = $(this);

    // Remove Class if already selected --> this is the part that I need help with
    if ($this.hasClass('selected')) {
        return false;
    }

    var $optionSet = $this.parents('.menu-option-set');
    $optionSet.find('.selected').removeClass('selected');
    $this.addClass('selected');
});​
4

4 に答える 4

1
$('.menu-option-set a').click(function()
{
    // if clicked item is selected then deselect it
    if ($(this).hasClass('selected'))
    {
        $(this).removeClass('selected');
    }

    // otherwise deselect all and select just this one
    else
    {
        $('.menu-option-set a').removeClass('selected');
        $(this).addClass('selected');
    }
});
于 2012-07-24T07:47:05.380 に答える
1

$().removeClass('selected')ieを使用できるはずです

  if ( $this.hasClass('selected') ) {
      $this.removeClass('selected');
  }

ただし、後でクラスを再度追加することになるため、これは実際には必要ありません。

.selectedすべての要素を選択しthis、クラスを削除して削除することで、これをインライン化できます。

$this
  .parents('.menu-option-set')
  .find('.selected')
  .not(this)
  .removeClass('selected');

$(this).addClass('selected');
于 2012-07-24T07:43:53.707 に答える
0

または、toggleClass()次の方法を使用します。

var $optionSets = $('.menu-option-set'),
    $optionLinks = $optionSets.find('a');

$optionLinks.click(function() {
    var $this = $(this);

    var $optionSet = $this.parents('.menu-option-set');
    $optionSet.find('.selected').not(this).removeClass('selected');
    $this.toggleClass('selected');
});​

編集:.not(this)クリック<li>されたクラスが削除される前に削除されないようにするためのを追加しました。

于 2012-07-24T07:45:08.947 に答える
0

簡潔にしたい場合:

$('.menu-option-set a').click(function() {
    $(this).toggleClass('selected').siblings().removeClass('selected')​​;
});
于 2012-07-24T08:11:10.263 に答える