プロが教える店舗&オフィスのセキュリティ対策術

jQuery初心者です。
.filterを使って、特定のCSSプロパティの値を持つものを検索し、抽出したもののCSSを書換えたいのですが、うまくいきません。

--------------------
z-indexの値が0以上のdivのwidthを200pxに変えるというコードを書いたつもりなんですが動きません。

※head内
<style type="text/css">
<!--
div.animal {
height:50px;
border:5px solid red;
background:rgb(255,140,0);
}
#neko {
width:50px;
position: absolute;
z-index: 0;
top: 50px;
left: 50px;
}
#inu {
width:50px;
position: absolute;
z-index: 1;
top: 70px;
left: 70px;
}
//-->
</style>

<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript">
$('div').filter(function(){
return (parseInt($(this).css("z-index").text())>0);
}).css("width","200px")
</script>

※body内
<div id=neko class=animal></div>
<div id=inu class=animal></div>

詳しい方が居られましたら、ご教授いただけませんでしょうか?よろしくお願いします。

A 回答 (2件)

<script type="text/javascript" src="/js/prototype.js"></script>


となっていますが、
jQueryですよね、prototype.jsと併用しているのですか?
もしjQueryだけなら。
<script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
<script type="text/javascript">
$('div').filter(function(){
return ($(this).css("z-index")>0);
}).css("width","200px")
ですけど...
DOMロード完了後に実行するなら、
$(function(){
$('div').filter(function(){
return ($(this).css("z-index")>0);
}).css("width","200px")
});
です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
恥ずかしながら、ご指摘を受けるまでうっかりprototype.jsにしたままでした。無事解決しました。

お礼日時:2009/09/24 18:15

回答1に無い部分の補足です。



jQueryオブジェクトのCSSメソッドは、エレメントに直接書かれているstyle属性のみを返します。
styleタグや外部CSSの値を取得できないので注意してください。

この辺は少し工夫が必要です。
jQueryを使わなくてもいいような気もしますが、
jQueryで書くなら、jQueryのルート関数のみに存在する内部メソッド「curCSS」もしくは「css」(所謂jQueryオブジェクトのcssメソッドとは別物)を使ってください。

curCSSメソッドはcssメソッドから呼び出されます。
CSSのプロパティがwidthとheight以外なら両者の機能は変わらないので、curCSSを使う方が少し速くなります。

$('div').filter( function() {
return $.curCSS(this, "z-index", true) > 0;
}).css("width", "200px");


ちなみに、
curCSSの第一引数はターゲット・エレメント
第二引数はCSSプロパティ
第三引数は属性値以外のスタイルからも取得する場合はtrue
戻り値は該当するプロパティの値です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
curCSSなんてメソッドがあるんですね。初めて知りました。
勉強になりました。ありがとうございました。

お礼日時:2009/09/24 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!