2010-04-07 54 views
6

假设我有这样的HTML标记的每一行:JQuery的:读一个元素

<div id="wrapper"> 
<pre class="highlight"> 
    $(function(){ 
    // hide all links except for the first 
    $('ul.child:not(:first)').hide(); 
    $("a.slide:first").css("background-color","#FF9900"); 

    $('ul.parent a.slide').click(function(){ 
     $('ul.parent a.slide').css("background-color","#3399FF"); 

     $('ul.parent a.slide').mouseout(function(){ 
      $(this).css("background-color","#3399FF"); 
     }); 

     $('ul.parent a.slide').mouseover(function(){ 
      $(this).css("background-color","#66CC66"); 
     }); 
    }); 
    }); 
    </pre> 
</div> 

什么是阅读存在于DIV代码的每一行的最简单的方法。如何以任何我想要的方式从每个线样式的div或循环中提取每行代码。

感谢

编辑:

我已经包装类后加入pre标签,请考虑之谓也。由于

+2

我假设你在''wrapper'的CSS中有'white-space:pre'或其他什么东西? – 2010-04-07 14:05:37

+1

这是邪恶的最纯粹的形式。 – googletorp 2010-04-07 14:11:55

+0

@ T.J。克劳德:是的,我有。 – Sarfraz 2010-04-07 14:14:54

回答

15

你的意思是这样的:

var lines = $("#wrapper pre").text().split("\n"); 
$.each(lines, function(n, elem) { 
      console.log(elem); 
      }); 

由于这是文本(而不是HTML),你应该把它看作。要做到这一点的唯一方法是阅读它,然后使用字符串解析例程。

+0

请查看我的新编辑问题。谢谢 – Sarfraz 2010-04-07 14:16:26

3

大多只是需要直接的JavaScript:

var text; 

text = $('#wrapper pre').text(); // Or .html, doesn't really matter with the input you showed 
text = text.replace("\r\n", "\n"); // Just in case 
text = text.split("\n"); 
// text is now an array of lines 

一些浏览器将修剪第一线断裂,有些不会,所以有一对夫妇的边缘的情况下(没有双关语)。但基本上就是这样。

+0

请看我的新编辑问题。谢谢 – Sarfraz 2010-04-07 14:16:49