Exclude $(this) from Selector

Let's say you want to attach a click handler to every link on a page. The function for that click handler turns all the other links a different color.

var $allLinks = $("a");

$allLinks.click(function() {

     $allLinks.not(this).css("color", "red");


You can use the .not() function to remove elements from a set, so padding this to that function will remove the current element before the color change.


  1. User Avatar

    Better application for this:

    var allLinks = $("a");
    allLinks.click(function() {
  2. User Avatar
    Tem Corner
    Permalink to comment#

    Since having a lot of links on a page with this script means that jQuery will manipulate each of the elements and do stuff in the class-attributte, this can become quite expensive and slow.

    A better way would be to use a common wrapper class.
    That way jQuery only touches the current link and the previously clicked ones. Way faster and cheaper on larger pages and good practice in general.

    The body-class part is not mandatory, the links could be made red by default leaving only two css rules. and two lines of javascript within the click function.

    	// Only do the body class once
    	var bodyIsClassed = false;
    	// Instead of binding handlers to all anchor-tags, watch live()
    	$( 'a' ).live( 'click', function(e){
    		$( '.clicked' ).removeClass( 'clicked' );
    		$( this ).addClass('clicked');
    		if ( !bodyIsClassed ) {
    			$( 'body' ).addClass( 'highlight-anchors' );

    See also http://krinkle-tools.grizzdesign.nl/other-anchors.html

Leave a Comment

Posting Code!

You may write comments in Markdown. This makes code easy to post, as you can write inline code like `<div>this</div>` or multiline blocks of code in triple backtick fences (```) with double new lines before and after.

Code of Conduct

Absolutely anyone is welcome to submit a comment here. But not all comments will be posted. Think of it like writing a letter to the editor. All submitted comments will be read, but not all published. Published comments will be on-topic, helpful, and further the discussion or debate.

Want to tell us something privately?

Feel free to use our contact form. That's a great place to let us know about typos or anything off-topic.