2013-10-19 2 views
1

나는이 설정과 비슷한 것을 가지고 있다고 말한다.jQuery .html() | 인라인 스타일이 포함됩니까?

<div id="error"> 
    <p style="color:green">Success.</p> 
    <p style="color:red">Failure.</p> 
    <p style="color:green">Success.</p> 
</div> 

내 자바 스크립트에는 다음과 같이 실행됩니다.

var response = $('#error').html(); 
if (response.indexOf('red') === -1) { 
    /*do stuff if #error has no style tags that have the color:red*/ 
} 

다른 방식으로 수행해야합니까? 고마워. 고마워.

+1

시도해 보셨습니까? –

+3

끔찍하지만 잠재적으로 작동합니다. – plalx

+0

'html()'은 스타일을 가져옵니다. 그러나 plalx가 위에서 언급했듯이 이것은 매우 나쁜 생각입니다. – Harry

답변

2

그렇다면 최선의 방법이 아니라면 어떻게해야합니까?

가장 좋은 방법 (또는 더 좋은 방법은) 오히려 스타일에 대해 확인하는 것보다 p 요소에 실패 클래스를 제공하는 것입니다. 당신은 선택의 여지가없는 경우하지만 ...

DEMO

여러 가지 방법이 있습니다, 첫 번째는 생각의 초기 라인에 가까운 :

if ($('#error > p[style*="color:red"]').length) { 
    console.log('red'); 
} 

약간 더 다른 접근 방식 내 의견 :

var redPs = $('#error > p').filter(function() { 
    return this.style.color === 'red'; 
}); 

if (redPs.length) console.log('red again'); 
+0

+1. 너는 너무 빨라서 여분의 옵션도 추가했다. 내가 생각했던 수정은'span'과 같은 다른 태그가있는 경우를 대비하여'p' 대신에'*'입니다. – Harry

+1

@Harry 그것은 여러 번 나에게 일어났습니다 = P – plalx

+0

감사합니다. <3 감사합니다. – George

0

예 인라인 CSS가 적용됩니다. 콘솔을 열려고 시도했다면 그 사실을 알았을 것입니다.

그러나 귀하의 필요를 확인하십시오. Jquery 데이터 속성을 사용하는 것이 좋습니다. jQuery 데이터 속성을 전달하면 메시지가 오류인지 성공인지 확인할 수 있습니다.

관련 문제