2011-08-12 9 views
0

同じイベントハンドラをいくつかの異なるdiv要素に割り当てることができます。各要素にはユニークなスタイルがあります。CSSとJavascriptのイベントハンドラを混在させる

私はそうのようなイベントハンドラを登録:

<script type="text/javascript"> 

function add_something() { 
    document.getElementById('manipulate').onclick = do_something; 
} 

function do_something(e) { 
this.style.property = value; 
} 

window.onLoad = add_something; 
</script> 

だから私はそうのような要素にイベントハンドラを割り当てることができます。

<div id="manipulate"></div> 

問題は、私はいくつかにそのハンドラを割り当てるということですそれぞれユニークなスタイルの要素があり、私はそれを行うためにCSSを使いたいと思っています。しかし、私はそれを行う方法がわかりません。

<style> 
#element1{...} 
#element1{...} 
#element1{...} 
</style> 

.....

<div id="element1" class="manipulate"></div> 
<div id="element2" class="manipulate"></div> 
<div id="element3" class="manipulate"></div> 

これが可能である:

結局、私はこのようなものをしたいですか?ありがとう

+0

window.onLoadはHTMLがレンダリングされる前に起動します。そのため、HTMLがレンダリングされたことを意味する "$(document).ready(...)"が使用されます。 CSSはイベントを処理しません.JavaScriptはイベントを処理しません。ステファンの例があなたにどのように表示されます。 –

+0

@Diodeusいいえ、DOMの準備は、ウィンドウロードの前に起動します... –

+0

Btw、 'window.onLoad'は動作しません - 小文字の' window.onload'を使用する必要があります。 –

答えて

1

イベント委任?

HTML:

<div id="wrap"> 
    <div id="element1" class="manipulate">First element</div> 
    <div id="element2" class="manipulate">Second element</div> 
    <div id="element3" class="manipulate">Third element</div> 
</div> 

ではJavaScript:

var wrap = document.getElementById('wrap'); 

wrap.onclick = function (e) { 
    var elem = e.target; 

    elem.style.color = 'red'; 
}; 

ライブデモ:http://jsfiddle.net/VLcPw/

+0

ありがとう、これは私が探していたようですが、...Eventuallly私は "ラップ"内にいくつかの他の要素、異なる機能/イベントを持つ要素、そしてまったくイベントを持たない要素を持つつもりです。各要素の「if」チェックを追加しなくても、それらの要素をどのように除外できますか? – SharpBarb

0

最新のブラウザでは、クラスごとに要素を選択することも、jQueryを使用してどこでも動作することがわかります。おそらく、

$(document).ready(function(){ 
    $('.manipulate').click(function(){alert('Hello.')}); 
    //or .hover/any other event. 
}); 

jQuery events.

より関連性の例?

$('.manipulate').click(function(){ 
    $(this).addClass('whateverClass'); 
    //or 
    $(this).css('color', 'red'); 
}); 
+1

-1、誰もがjqueryを使いたいとは限りません。質問にはjavascriptが必要です。このシンプルな機能のために大きなライブラリは必要ありません。 – GBa

+0

@Greg:はい。私はトップ500のウェブサイトが明らかに彼らが何をしているのか分からないと確信しています。 –

0

は、なぜあなたはjqueryのを試して与えていませんか?

はjQueryを使って、あなたは、これはすべての対応する要素に同じクリックイベントをバインドするために必要なだけのはずです。



    $("div.manipulate").click(function(e) { 
     $(this).css(property, value); 
    }); 

プロパティはもちろん、正しい値で有効なCSSのプロパティ、値に置き換えられています。

+1

私はJavascriptを最初に試してみようとしていました。私はまだ趣味として学んでおり、基本から始めるべきだと考えました。 jQueryはJavaScriptのコレクションではありませんか? – SharpBarb

+0

jQueryはあなたに多くの時間を節約できるすばらしいフレームワークです。私はそれが間違いなく試してみる価値があると思います。もちろん、あなたは正しいです、まずは基本的なJavaScriptから始めてください。 –

関連する問題