2010-01-21 68 views
1

我用太多的jQuery的jQuery JavaScript的等效

我想了jQuery来做到这一点:

<a onclick="javascript:$(this).next().css('display', 'none')"> 

我以为是这样的:

<a onclick="javascript:this.nextSibling.style.display = 'none'"> 

但它不是。样式返回未定义。

让我澄清一下:

我想这样做:

<a class="errorToggle">error</a> 
<div style="padding-left:20px;margin:0 0 10px 0;display:none;"> 

<h4>A PHP Error was encountered</h4> 

<p>Severity: <?php echo $severity; ?></p> 
<p>Message: <?php echo $message; ?></p> 
<p>Filename: <?php echo $filepath; ?></p> 
<p>Line Number: <?php echo $line; ?></p> 

</div> 

<script type="text/javascript"> 
    $(".errorToggle").click(function(){ 
    $(this).next().css("display", "block"); 
    }); 
</script> 

没有jQuery的,因为这是我的头不前,往往会加载一个代码点火器的错误视图文件,所以我不会有权访问jquery。它不需要很漂亮,也不需要编码,只需要工作。这不会用于生产。

+0

把你的标记 – 2010-01-21 02:20:26

+0

你是什么意思的“太多”jQuery?如果你使用它,它就会出现在这里,所以你不妨使用它。另外,如果您从CDN获取它,它可能已经缓存在访问者的浏览器中,因此没有太多的开销。 如果你的意思是你不想使用它,我很同情。如果只有Netscape已经向微软提供了源代码(甚至只是规格),那么可怜的亲们就不必为了窃取它而尝试对其进行反向工程,并且浏览器兼容性会更好。 – Duncan 2010-01-21 02:40:19

+2

jQuery或没有jQuery,你不需要在你的事件处理程序开始时使用'javascript:'。 – bobince 2010-01-21 03:03:16

回答

5

看看这篇文章:
JavaScript nextSibling and Cross Browser Compatibility

摘录:

的问题是,我们 使用的onClick 事件引用在我们的JS的 元素的 'nextSibling' 。在IE中,这个效果很好,但是在Firefox中,'nextSibling' 可能是一个换行符。

您可能需要遍历“nextSibling()”,直到达到您想要的效果。

+1

这就是为什么你使用像jQuery这样的库 - 跨浏览器保证相同的行为。写一次,只是工作。 – Erik 2010-01-21 02:19:15

+0

这也是为什么我们许多人都没有这些库和框架而瘫痪。我也是其中之一。 Hah – 2010-01-21 02:24:11

+1

请注意,Firefox的行为是正确的。 – bobince 2010-01-21 03:03:57