HTML要素の属性の取得、変更に使われるattrと、prop。 同じように見えますが、attrは属性の値を取得するのに対し、propはプロパティそのものの真偽を取得します。
<input type="checkbox" name="hoge"> $('input').attr('id') //undifined $('input').prop('id') //false
となります。なのでattrを使って属性の値を変更したいときは、そもそもその属性が存在しないといけないので、HTML要素に値が空でも記述しておく必要があります。