CSS を介して best_in_place 値とプレースホルダー (data-nil="enter your number") を区別する方法がないように見えるため、何かが足りないと思います。紛らわしくないように、プレースホルダーのスタイルを実際の値とは異なるスタイルにしたいだけです。
イベントを調べたところ、実際に要素にクラスを追加できましたが、最初にページに表示されたときに、そのクラスを追加するためのイベントがありません。この時点で、各 $('best_in_place') を繰り返し処理し、nil 値をスパン内の html の値と比較しますが、これを行う前に、何かを見逃していないかどうか疑問に思っています。
では、best_in_place で値が設定されていることを区別する方法はありますか?
コードで理解が深まる場合: これは機能し、クラスを best_in_place に追加または削除するだけですが、ユーザーがフィールドを編集したときにのみ設定され、最初のページの読み込みでは設定されません。
$('.best_in_place').bind('best_in_place:update', function(evt){
if($(this).data('nil') == $(this).html()){
$(this).removeClass('has_value');
}else{
$(this).addClass('has_value');
}
});