2011-11-18 24 views
2

使用jQuery獲取樣式標記內容?

我試圖獲取內容的樣式標籤內但我不能讓它正常工作的問題。

的代碼做什麼

我使用jQuery,並嘗試獲取其風格與內容的文本()和HTML()。這是行不通的。

我的代碼

<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
    <link rel="stylesheet/less" type="text/css" href="css/style.less"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script> 

    <style id="less:concepts-less-css-style" media="screen" type="text/css"> 
     body { 
      padding: 10px; 
      background: blue; 
     } 
    </style> 

</head> 
<body> 
<script src="js/less-1.1.5.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
     jQuery(document).ready(function($) {   
      var my_id = $('style').attr('id'); 
      var test = $('#less:concepts-less-css-style').text(); 
      var test2 = $('#less:concepts-less-css-style').html(); 
      alert(test + "#" + test2 + "#" + my_id); 
     }); 
    </script> 
</body> 
</html> 

回答

4

我認爲你必須在你的ID中冒號冒號,因爲它通常意味着選擇器語法中的某些東西。有關此問題的討論,請參見Handling a colon in an element ID in a CSS selector

$('#less\\:concepts-less-css-style') 

我個人避免與CSS選擇器的特殊字符在我的ID或類值意味着避免這種併發症。

+0

這也適用於jQuery使用sizzle引擎的舊瀏覽器嗎?因爲它們可能不像現代瀏覽器的內部查詢選擇器那樣嚴格地實現規範。 – Esailija

+0

它是CSS規範的一部分,並且已經很長時間了,所以它應該可以工作,但我的建議是讓OP從ID值中移除冒號。你必須測試一個特定的Sizzle版本,如果你想確定它是否在那裏工作,但它應該。 – jfriend00

+0

工作,謝謝!我沒有自己添加冒號,它是由LESS語言(http://lesscss.org/)生成的。 –

1

嘗試:

$('#less:concepts-less-css-style')[0].innerHTML 
3

的ID是爲了讓jQuery的認爲這是一個僞選擇..嘗試

var elm = document.getElementById("less:concepts-less-css-style"), 
    content = elm.innerHTML || elm.innerText || elm.textContent; 

    alert(content); 

你當然可以改變的該id不會如此不穩定,jQuery將工作。

+0

這不是jQuery的,但它的工作。謝謝! –

+1

@JensTörnell,更仔細地閱讀答案,你會明白;) – Esailija

0

使用屬性的選擇,而不是

var test = $('style[id="'+my_id+'"]').text(); 
    //or 
    var test2 = $('style[id="less:concepts-less-css-style"]').html();