2010-01-21 73 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