jQueryのattrとpropの違い

HTML要素の属性の取得、変更に使われるattrと、prop。 同じように見えますが、attrは属性の値を取得するのに対し、propはプロパティそのものの真偽を取得します。

<input type="checkbox" name="hoge">

$('input').attr('id')    //undifined
$('input').prop('id')   //false

となります。なのでattrを使って属性の値を変更したいときは、そもそもその属性が存在しないといけないので、HTML要素に値が空でも記述しておく必要があります。