如何将最接近的pre标签绑定到锚点

时间:2015-12-22 11:25:59

标签: javascript jquery

我有这个html结构:

<a href="javascript:;" class="print">Open</a>

<pre class="CodeBlock">
<ol class="linenums">
<li class="L0"><span>one</span></li>
<li class="L1"><span>two</span></li>
<li class="L2"><span>three</span></li>
</ol>
</pre>
<br /><br />
<a href="javascript:;" class="print">Open</a>

<pre class="CodeBlock">
<ol class="linenums">
<li class="L0"><span>four</span></li>
<li class="L1"><span>vfive</span></li>
<li class="L2"><span>six</span></li>
</ol>
</pre>

我使用锚点打开一个新窗口,其中包含pre标签的内容,如下所示:

function nWin() {
  var w = window.open();
  var html = $(".CodeBlock").html();

  $(w.document.body).html(html);
}

$(function() {
   $(".print").click(nWin);
});

单击第二个锚点输出第一个pre元素的文本,它应该是第二个。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用this关键字引用点击的元素,然后使用next()方法查找最近的同级pre元素。试试这个:

function nWin() {
    var w = window.open();
    var html = $(this).next('.CodeBlock').html();
    $(w.document.body).html(html);
}

$(function() {
    $(".print").click(nWin);
});

答案 1 :(得分:1)

您需要在事件处理程序中使用.next()来获取以下兄弟,这可以使用this来实现,var html = $(this).next(".CodeBlock").html(); 引用调用处理程序来获取兄弟的元素。

var html = $(".CodeBlock").html();

而不是

d = {k:v for k,v in zip(L1,L2)}