2010-12-17 8 views
0

jquery関数を作成しようとしていますが、jqueryにはまったく新しいものです。ここに私が選択されていないクラスへのリンクをすべてクリアしたい私の非常に簡単な関数は、選択されたリンクを除き、次のとおりです。 JS初心者はJqueryのヘルプが必要

$(function() 
{ 
    $('li a').click(function() 
    { 
     $('li a').addClass('unselected'); 
    $(this).addClass('selected'); 


    }); 


}); 

私はこれをどのように行うのです

?そして、特定の名前属性を持つもの以外のすべてを選択解除するにはどうすればよいですか?ここでは、リンクの例です:

<li><a id="106" name="wavelength" href="#">10.6 &micro;</a></li>... set of links 

とリンク

<li><a id="10watt" name="power" href="#">10 watt</a></li>.... 

答えて

1

を他の回答(これは今削除されています)にあなたのコメントへの返答:

これらのタグは5列にあります。他のものを選択したまま、列内のものだけをどのように選択解除するのですか?私の名前と私のリンクタグが付いているグループに属性をそれら

あなたは可能性があり、それらが中に含まれている<ul>によるグループあなた<li>リンクを!

あなたはその内、その後.closest('ul').find('li a')ため<a>の両親を検索するためのjQueryを使用することができます。

:あなたはリンクグループは nameは、このコードを見てみましょ属性共有言ったので

// best practice says you should cache the result of this search 
// so you don't need to find it again 
var $links = $('li a'); 
// attach a click function to the links 
$links.click(function() { 
    // again cache it... we will use it more than once. 
    var $this = $(this); 

    // remove selected from everything - add unselected 
    $this.closest('ul').find('li a').removeClass('selected').addClass('unselected'); 
    // remove unselected from this link and add selected 
    $this.removeClass('unselected').addClass('selected'); 
}); 

var $links = $('li a'); 
$links.click(function() { 
    // store ourself as a jquery object, and get our name: 
    var $this = $(this), myname = $this.attr('name'); 

    // filter $links to obtain the ones that share myname: 
    $links.filter(function() { 
    // we can use the DOM element "this.name" instead of $(this).attr('name') 
    // to save some time here: 
    return this.name == myname; 
    }).removeClass('selected').addClass('unselected'); 

    $this.removeClass('unselected').addClass('selected'); 
}); 

特定の名前属性を持つものを見つけるまでは、Attribute Equals Selectorを確認してください:

$('li a[name=wavelength]'); 
+0

ありがとうございます。これは私のためのまったく新しいエリアなので、私は何をしているのか分かりません。私は他の人に私のコードを書かせることが嫌いですが、コードを見るまで私は学ぶことができません。とりあえずありがとう。 – sehummel

+0

私はあなたの名前を受け入れたものとしてマークしました。 – sehummel

1
$(function() { 
    var $a = $('li a'); 
    $a.click(function() { 
    $a.removeClass('selected').not(this).addClass('unselected'); 
    $(this).addClass('selected'); 
    }); 
});

の別のセットは、特定の名前のリンクをターゲットにしたい場合は、可能なセレクタの一つは
a[name='somenamehere']です。例では

、これは十分であろう:
$a.filter("[name='somenamehere']")
(あなたが何をしたいかに応じて、異なった属性セレクタを実装する場合があります)


また、それは良いかもしれませんもしあなたが "選択されていない"クラスを離れたのであれば、私はあなたがスタイリングにそれを使用していると仮定します。その場合は、すべてのリンクにスタイルを与え、その後、元のスタイルの上にスタイリング.selectedリンク与える:


.menu a, .menu a:visited { 
    color: #FF0000; 
    text-decoration: none; 
} 

.menu a.selected { 
    font-weight: bold; 
}
+0

+1ファストフィンガー – gnarf

0

をあなたは、ほぼありました... :)このお試しください:で

$(function() 
{ 
    $('li a').click(function() 
    { 
     $("li a[name!='wavelength']").addClass('unselected'); 
       $(this).removeClass('unselected'); 
       $(this).addClass('selected'); 
    }); 
}); 
+0

ありがとう、Cyber​​mate。これを一般化するにはどうすればいいですか?列ごとに列ごとに1つの項目のみを選択できますか? – sehummel

+0

Hey Shummel、私は列ごとの意味を理解していませんでした。あなたは詳細を教えていただけますか? – Chandu

+0

横に5つの列があります。ユーザは、列1から項目2を選択します。しかし、グナフの答えは、私が欲しかったところに私をもたらしました。ご協力いただき、ありがとうございます。 – sehummel

関連する問題