2009-12-27 155 views
4

OK我剛剛開始使用jQuery。Jquery替換Javascript函數的返回值

我有一個包含日期值表的頁面。每個包裹在一個標籤,我可以找到 $('mytag')。 <mytag>2009-10-31</mytag>

如何,使用jQuery,我會

  1. 採取每個源值和
  2. 傳JavaScript函數
  3. 然後用結果替換表內源值函數計算。

所以<mytag>2009-10-31</mytag>將與<mytag>Very Late</mytag>

代替我的JavaScript函數編寫。我的問題是jQuery語法來傳遞個人價值。

+1

好想問題,歡迎來到社區。 – gnarf 2009-12-27 20:02:50

回答

6
首先

,則需要一個元素選擇器,例如

$('table') 

將選擇你的HTML所有<表>元素。所以,

$('mytag') 

會給你你的元素。你會得到一個jQuery對象(不是DOM對象)返回。請參閱http://docs.jquery.com/Selectors

然後,您要爲每個元素調用一個函數。爲此,我們調用。每個函數,並傳遞函數來調用爲每個元素:

$('mytag').each(function(){ 
    //function code goes here 
}); 

(參見http://docs.jquery.com/Utilities/jQuery.each

在這種情況下,函數被稱爲匿名功能

然後你想在迭代中引用當前對象,所以我們使用DOM this項目並將其包裝到jquery對象中。爲了獲得價值,我們使用的.text()函數(http://docs.jquery.com/Attributes/text

$('mytag').each(function(){ 
    $(this).text() 
}); 

注意:如果它是一個input元素,那麼你就已經使用。VAL()

它傳遞給函數很簡單:

... 
    MyFunction($(this).text()); 
    ... 

文本()函數有一個重載的實現,它允許你,如果你傳遞一個值設置文本:

$(this).text(someval); 

因此,我們可以考慮此因素到我們的代碼

... 
    $(this).text(MyFunction($(this).text())); 
    ... 

使我們的最終代碼塊:

$('mytag').each(function(){ 
    $(this).text(MyFunction($(this).text())); 
}); 
+0

謝謝,這個工作就像一個魅力,你的解釋是徹底和清晰的。 – 2009-12-27 19:22:28

0
$('mytag').each(function (index,tag) { 
    $(tag).text(myFunc($(tag).text())); 
}); 
0
$("mytag").each(function() { 
    $(this).html("Very Late"); 

}); 
0
$('mytag').each(function() { 
    $(this).text(someFunction($(this).text())); 
}); 

但是,從你的問題的聲音,你可能會更好地被jQuery-timeago plugin服務。對於您的特定情況,您可能需要在將來允許日期:

jQuery.timeago.settings.allowFuture = true; 

...並且您希望創建自己的語言重寫。請參閱language override examples。你可以定義幾個「遲到」和「非常晚」的值。您還可以將函數傳遞給每個函數,以根據多少天前的時間戳來更改值。