2011-08-12 3 views
0

여러 div 요소에 동일한 이벤트 핸들러를 할당하고 싶습니다. 각 요소에는 고유 한 스타일이 있습니다.CSS와 자바 스크립트 이벤트 핸들러를 함께 사용하기

<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

HTML이 렌더링되기 전에 window.onLoad가 실행되므로 "$ (document) .ready (...)"가 사용되는 이유는 HTML이 렌더링되었음을 의미합니다. 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> 

자바 스크립트 :

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

@ 그렉 : 그래. 나는 500 대 웹 사이트가 자신들이하는 일을 분명히 알지 못할 것이라고 확신한다. –

0

왜 포기하지 않는 JQuery와해볼?

는 jQuery로이 해당되는 모든 요소에 같은 클릭 이벤트를 바인드해야 만한다 :



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

속성은 물론, 올바른 값을 유효한 CSS 속성, 값으로 대체하고 있습니다.

+1

Javascript를 먼저 사용해 보려고했습니다. 나는 여전히 취미로 배우고 있으며 기초부터 시작해야한다고 생각했습니다. jQuery가 자바 스크립트 컬렉션이 아닌가? – SharpBarb

+0

jQuery는 많은 시간을 절약 할 수있는 멋진 프레임 워크이며, 시도해 볼만한 가치가 있다고 생각합니다. 물론 당신이 옳다면, 먼저 기본 자바 스크립트로 시작해야합니다. –

관련 문제