2012-03-12 4 views
3

div要素にjqueryでCSSを適用しようとしましたが、$(this)パラメータを受け入れません。なぜ私は$(this)をdiv要素のリファラーとして使用しないのでしょうか?

blabla.css({ 
'top': $(window).width()/2-$(this).width()/2+'px', 
'left': $(window).width()/2-$(this).width()/2+'px' 
}); 

ERROR:キャッチされない例外TypeError:オブジェクト#は何の方法 '幅' 事前に

感謝を持っていません。..

PS:私は$()の内側に、ここでの直接のidコールを使用することができます知っているが、私はthisが働くことを期待しました。

+5

このコードの文脈を提供してください(ここでは、* that *関数をどのように呼び出すか)。それだけで、私たちは「これ」が何を指しているのかを知り、適切な解決策を提供することができます。あるいは、単に「これ」が「blabla」を参照すると期待していますか? 'blabla'とは何ですか? (私は@Mattが正しい軌道にあったと思う(アンサーを元に戻すべきだ))) –

+0

私の推測では、あなたが匿名の関数や何かのようなものの中にいることと、 'this'はあなたの要素ではなく、 – user978548

+0

は次のことを前提としています:blabla = $( '#somediv') – zsitro

答えて

1

を試してみてください、明示的に幅を参照する必要がありますか?

+0

のようになりました。blablaはFW.model.box.divのようになりました。そしてその長すぎる – zsitro

+1

は 'var bla = $( 'FW> model> box> div')' –

+0

のようなローカル変数に格納しています。私はこれを適応させます.. ..タイ – zsitro

2

コールバックを実行していないので、オブジェクトを.cssに渡していることに注意してください。したがって、thisblabla - 要素を参照していませんが、このコードを含む関数が呼び出されたときに定義された現在のコンテキスト(およびその値は異なる可能性があります)を参照していません。このコンテキストには.widthが含まれていないため、エラーが発生します。

あなたは$(this)ではなく$(this).width()blabla.width()を使用しない理由blabla、ある場合blabla.width()

1

のようにあなたは、おそらく

$("#blabla").css('top',function(){ 
    alert($(this).width()); 
});​ 
+0

作品はありますが、短いコードが返されます。 ty – zsitro

0

私はこれも解決策が必要でした。私はフローティングディビジョンを中心にjQueryを使いたいと思っていました。私はCSSを使用して、私のdivを中心に別のルートを行くことになったが、$(this)を使用してのコンセプトは同じまま

$("div[class~='floatCenter']").each(function() { 
    var elementWidth = $(this).outerWidth()/2; 
    var parentWidth = $(this).parent().outerWidth()/2; 
    var marginPixels = parentWidth - elementWidth; 
    $(this).css("margin-left", marginPixels + "px"); 
}); 

:私は、オンロードとウィンドウサイズ変更で呼び出され、この関数を作成しました。

関連する問題