data 属性の値に応じて関数を実行しようとしています。しかし、これfalseを実行すると常に返されます:
alert(jQuery(this).data('loaded') == 'no');
しかし、私のデータ属性は「いいえ」に設定されていて、アラートを出すと
alert(jQuery(this).data('loaded'));
正しいデータ属性値を返します。
アップデート
HTML
<a class="btn" href="#" data-loaded="no"></a>
コードのすべて
jQuery('a').click(function(e) {
    e.preventDefault();
    if (jQuery(this).data('loaded') == 'no'){
        ajax();
        jQuery(this).attr('data-loaded', 'yes');    
    }
});