Created: 2012-08-20 22:50
Updated: 2019-01-19 20:20
License: other



More than one instance of an id on a page? Don't control the entire page? Want your forms to be more accessible? LabelFor is for you!

What is it? LabelFor is a jQuery extension to automatically associate label elements with nearby inputs in an html standards compliant way.

To use:


The first label will associate with any next element via for="_next". The second label will associate with the previous element.

<label for="_next">Username</label><input type="text">

<input type="text"><label for="_prev">Zip</label>

The Javascript. (you can specify any root node(s))

//to find all labels within body

Simple+ CSS

This will find elements matching the css expression following '_next' within the element immediately following the label.

<div class='css-username'>
    <label for="_next input">Username</label>
        <input type="text">
//only associate labels within the matched elements

to include on your page

  • If you're including on a very simple web-page you can copy /dist/main.js and the /dist/main.js.map into your javscript directory and use a <src> tag to include main.js on your page.
  • If you're using an ES5 build system you can require('jquery-labelfor') wherever you're doing your other plugins
  • If you're using ES2015+ or Babel I'd suggest using import $lf from 'jquery-labelfor/src/main' This will help your bundler minimize file sizes. You'll also be able to call $lf(".css-expression"")


  • Non invasive: LabelFor is non destructive to existing ids.
  • Idempotent: It can be run multiple times over the same set of elements without messing up existing associations.
  • This lib is super-mature. It gets security updates. If you want a new feature please submit a PR on github
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more