2013-10-19 21 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> 

和在我的JavaScript我運行這樣的東西。

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()'將獲取樣式。但正如上面提到的,這似乎是一個非常糟糕的主意。 – 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。你太快了一分鐘,並增加了一個額外的選項。只是我想的修改是'*'而不是'p',以防其他標籤如'span'等。 – Harry

+1

@Harry它發生在我身上這麼多次= P – plalx

+0

謝謝,夥計<3欣賞它。 – George

0

是的,它會採取內聯CSS。如果你嘗試打開一個控制檯,你已經知道了。

但看到你的需要。我建議使用Jquery數據屬性。傳遞jQuery數據屬性可以發現消息是錯誤還是成功。