2011-11-10 76 views
0

我是jQuery的新手。我正在嘗試將一個值傳遞給一個函數。jQuery「這個」問題

<div class="the_service" id="ecommerce" onClick="javascript: gorightthere(ecommerce);"> 

function gorightthere(this){ 

    var gothere = $('h2[name="'+this+'"]'); 
    if (gothere.length){ 
$('html, body').animate({ 
        scrollTop: gothere.offset().top 
        }, 2000); 
     removeClass('selected'); 
     gothere.addClass('selected'); 
    } 
}; 

我想要做的是將價值「電子商務」傳遞給函數。我想使用「this」是因爲我有許多不同的值可以傳遞,我想要做一個函數來處理在onClick事件之後傳遞的每個值。

任何幫助?

感謝

+0

你不需要在你的js前面包含'javascript:' – mrtsherman

回答

7

你的變量名與保留關鍵字this衝突。使用另一個變量名稱,你應該全部設置。在一般情況下,你不應該使用this一個變量名,因爲它在幾乎所有的基於C的語言非常特殊的意義:

function gorightthere(value) {  
    var gothere = $('h2[name="' + value + '"]'); 
    if (gothere.length){ 
     $('html, body').animate({ 
      scrollTop: gothere.offset().top 
      }, 2000); 
     removeClass('selected'); 
     gothere.addClass('selected'); 
    } 
}; 
1

而不是使用「這個」,爲什麼不使用普通的變量一個參數?這是因爲this是JS中的一個關鍵字。

1

'這' 是一個保留關鍵字,試試這個代碼:

<div class="the_service" id="ecommerce" onClick="javascript: gorightthere(this);"> 

function gorightthere(element){ 

    var gothere = $(element); 
    if (gothere.length){ 
$('html, body').animate({ 
        scrollTop: gothere.offset().top 
        }, 2000); 
     removeClass('selected'); 
     gothere.addClass('selected'); 
    } 
}; 
0

實際上你可以只扭轉你的變量,像這樣: 在你的div標籤的變化 - > JavaScript的:gorightthere(本); 功能gorightthere(電子商務){

var gothere = $('h2[name="'+ecommerce.id+'"]'); 

假設你在你的div來表示你的h2元素的名稱標識,否則其他細微的修改將需要。