jQuery的上一个()不工作

我有这样的html代码:

<body> <div class="CodeRay"> <div class="code"><pre><span class="no"> 1</span> require <span class="s"><span class="dl">'</span><span class="k">yaml</span><span class="dl">'</span></span> <span class="no"> 2</span> require <span class="s"><span class="dl">'</span><span class="k">set</span><span class="dl">'</span></span> <span class="no"> 3</span> <span class="no"> 4</span> <span class="r">module</span> <span class="cl">ActiveRecord</span> <span class="c">#:nodoc:</span> <span class="no"> 5</span> <span class="c"># Generic Active Record exception class.</span> <span class="no"> 6</span> <span class="r">class</span> <span class="cl">ActiveRecordError</span> &lt; <span class="co">StandardError</span> <span class="no"> 7</span> <span class="r">end</span> <span class="no"> 8</span> ... </body>

对于这个HTML代码我的javascript:

$(document).ready(function() { $('span').not('.no,.c,.r,.pc').click(function(e) { var target = $(e.target); var element = target.prev('.no'); element.effect('highlight', {}, 'slow'); });

问题是prev()返回与之前相同的对象,都找不到.no的元素。 它不通过DOM树元素的前辈搜索。 谢谢

--------------解决方案-------------

这里有一个的jsfiddle工作示例:

http://jsfiddle.net/shaneblake/bRRmA/

我已经更新了下面的代码行,以解决您的评论的jsfiddle:

$(this).prevAll('.no:first').effect('highlight', {}, 'slow');

那么,你选择器$('span').not('.no,.c,.r,.pc')排除所有.no这样的不足为奇,你看到什么。

你可以试试:

$(document).ready(function() {
$('span').click(function(e) {
var $this = $(this);
if (!$this.is(".no,.c,.r,.pc"){
$this.prev('.no').effect('highlight', {}, 'slow');
}
});

分类:jQuery的 时间:2015-03-15 人气:0
本文关键词: jQuery的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.441 (s). 10 q(s)