2010-01-10 4 views
3

요소 CSS 클래스의 문자열을 배열 이름으로 사용할 수 있습니까?
배열에서 더 많은 옵션을 포함하도록 시간이 지남에 따라 커질 수있는 기본 애니메이션을 더 똑똑하게 저장하는 방법을 찾고 있습니다.현재 요소 클래스를 배열 이름으로 사용 하시겠습니까?


자바 스크립트 (jQuery를) -

var a1 = ['red', 'pink']; 
var a2 = ['green', 'lime']; 
var a3 = ['blue', 'cyan']; 

$('ul li').click(function() { 
    arr = $(this).attr('class'); // Does this need to be converted? 
    $('div#sprite').css('background', arr[0]); // Is this kosher? 
    $('div#sprite p').css('color', arr[1]); 
    }); 

HTML : - ADVA의

<div id='sprite'><p>Lorem ipsum...</p></div> 

<ul> 
    <li class='a1'>Array 1</li> 
    <li class='a1'>Array 2</li> 
    <li class='a1'>Array 3</li> 
    </ul> 

감사합니다 nce!

답변

2

당신이 사용하는 이름으로 글로벌 (최상위) 변수에 액세스 할 수 있습니다 그래서 당신은 window[arr][0] 찾고있는

window[arr] 

. 여기에 실제 적용됩니다. http://jsbin.com/ofemo

그러나 JavaScript와 디자인간에 밀접한 관련이 있습니다. 보통 .addClass을 사용하고 CSS를 사용하여 색상을 정의하는 것을 선호합니다. 또한

+0

고비 감사합니다. 데모가 실제로 도움이되었습니다. 그것은 ** 변수 범위의 경우입니다 : - |. 클래스를 사용하는 것이 옳습니다. 섹션/페이지 사이에서 jQuery 색상 전환을 사용합니다. 이제 스타일 시트 섹션 색상 ()에서 '배열'을 만드는 것이 훨씬 더 합리적이라고 생각합니다. Grr; 그래서 선물과 저주입니다. 다시 한번 감사드립니다. – LeslieOA

2

jQuery의 메타 데이터 플러그인을 사용해야합니다. 요소 관련 데이터를 클래스 또는 모든 data- * 속성에 저장할 수 있습니다.

+0

일을, 그래서 나는 내 대답에 편집 할 필요가 없습니다. – Kobi

+0

이것은 아마도 당신의/코비의 생각에 다가 왔을 때 도움이 될 것입니다. 감사합니다 Eimantas! – LeslieOA

2

,이 같은 배열이 있습니다

var colors = { 
    'a1':{ 
     'background-color':'red', 
     'color':'pink' 
    }, 
    'a2':{ 
     'background-color':'green', 
     'color':'lime' 
    }, 
    'a3':{ 
     'background-color':'blue', 
     'color':'cyan' 
    } 
} 

날 전에 작성을위한 다음

$('div#sprite').css(colors[$(this).attr('class')]); 
+0

아마 배열에 집착하지 않을 것이지만, 팁을 주셔서 감사합니다. 평화 에릭. – LeslieOA

+0

명확히하기 : 이것은 기술적으로 개체가 아니라 배열입니다. 각 값에 해당 키가있는 방식에 유의하십시오. Javascript는 배열처럼 보이게하는'[]'표기법을 통해 속성에 접근 할 수있게합니다. – Joel

+0

연관 배열과 객체가 아닌가? Javascript에서, 그들은 동일하고 동일합니다. – Eric

관련 문제