jquery 1.9 では attr の代わりに Prop api を使用します。
$("select option:contains(fish)").prop('selected', 'selected');
また
$("select option:contains(fish)").prop('selected', true);
理由: jQuery 1.6 では、ノードのプロパティを設定または取得するための .prop() メソッドが導入され、プロパティを設定するための .attr() の使用が非推奨になりました。ただし、1.9 までのバージョンは、特定の状況での .attr() の使用を引き続きサポートしていました。下位互換性という名目でのこの動作は、属性とプロパティを区別するセレクターが使用されるときに混乱を引き起こします。
ソース: http://jquery.com/upgrade-guide/1.9/#changes-of-note-in-jquery-1-9
Attr Api で言及: jQuery 1.6 の時点で、.attr() メソッドは、設定されていない属性に対して undefined を返します。さらに、.attr() は、プレーン オブジェクト、配列、ウィンドウ、またはドキュメントでは使用しないでください。DOM プロパティを取得および変更するには、.prop() メソッドを使用します。
ソース: http://api.jquery.com/attr/#entry-longdesc