會員中心 | iThome online | iT邦部落格 | 小7聚樂部 | iThome download | apphome

載入中...

pcschoolleo

iT邦初學者
10級

jQuery輸出問題

我使用phonegap製作app,打算多國語言化,翻譯使用google translate,我有找到一個google trnaslates plugin,而且也順利翻譯,不過有一個小問題,這個plugin只能翻譯一個元素,超過2個就不行,我想要一次翻譯多個,而且還要輸出到不同的欄位,不知要增加什麼?

翻譯外掛
http://www.superawesomejquery.com/plugins/2_jquery-google-translate-plugin/demos/

底下是google.js程式碼
----------------------------------------------
$(document).ready(function() {
$('.simple-input').googleTranslate({
target : '.simple-output',
targetLang : 'zh-tw',
apiKey : 'AIzaSyCQNwanknkUx3c'
});
});
------------------------------------------------------------
底下是我的App範例程式碼
<script type="text/javascript" src="google/jquery.googleTranslate-2.js"></script>
<script type="text/javascript" src="google/google.js"></script>

</head>
<body >
<p><span class="simple-input">hi</span></p>
<p><span class="simple-input">world</span></p>
<p>
<span class="simple-output"></span>
<span class="simple-output"></span></p>
</body>

現在翻譯結果會出現
你好 你好
或是
世界 世界
1.有辦法一次翻譯多個元素嗎?現在只會翻譯一個元素
2.輸出結果有辦法只要建立一個元素就可收納全部翻譯結果,不用要輸出2個元素,就要建立2次
<span class="simple-output"></span>嗎?
謝謝


發佈到:發佈到Facebook 發佈到噗浪 發佈到twitter
分享時間:2012-04-25 15:13:58
▼ ADVERTISEMENT ▼

最佳解答(發問者自選)
2
iT邦幫忙MVP

回答:fillano ( iT邦大師3級 )

時間:2012-04-26 10:22:00

http://www.superawesomejquery.com/downloads/translate/jquery.googleTranslate-2.js

照我從他原始碼裡面看到的邏輯,要達成你的目的是做不到的,建議你直接改他的原始碼。原始碼不到100行,而且關鍵邏輯只有幾行,應該不難改。

問題在哪裡的話...
var input = $(element).html();

這樣無法處理多個元素的innerHTML。

[-隱藏]

回應

1

pcschoolleo 說:

我看了一下jquery的api,假如超過1個相同的元素,只會顯示第一個符合的,所以我的問題應該要找到,可以處理多個元素的api,對吧,努力找尋中
In an HTML document, .html() can be used to get the contents of any element. If the selector expression matches more than one element, only the first match will have its HTML content returned.

2012-04-26 11:52:11

2

fillano 說:

$('.simple-imput').each(function(){console.log($(this).html())});

像這樣才能每個元素執行一次html()。

$()找到的結果是一個list,即使只有一個元素也一樣。

另外,如果你看過google translate api的說明,你就會知道可以傳多筆&q=a;&q=c資料給他,翻譯完回傳的也會是陣列,然後你再處理這個陣列就可以。

2012-04-26 12:17:21

3

pcschoolleo 說:

我這樣改好樣不行耶!還是我會錯意了。
我是jquery的初學者,買了一本jquery書,也借了一本書,看完後只有概念而已。
$(document).ready(function() {
$('.simple-input').each(function(){console.log($(this).html())}).googleTranslate({
target : '.simple-output',
targetLang : 'zh-tw',
apiKey : 'AIzaSyCQNwanknkUx3c'
});
});

2012-04-26 20:28:42

4

pcschoolleo 說:

btw,另html及each的用法,突然發現書裡面有提到,只是之前大概看過

2012-04-26 20:47:37

5

fillano 說:

看起來您真的不熟jQuery...我再幫您看一下好了

2012-04-26 20:52:05

jQuery輸出問題
回答:simon88( iT邦初學者4級 )
時間:2012-04-26 09:22:24
1
你有發現到demo網頁上面是一個蘿蔔一個坑嗎?
那你的情形是一個蘿蔔多個坑,一個input塞到到兩個output,
看這段:
target : '.simple-output',

你有兩個class是simple-input,這就說明了每一個simple-input會去塞在兩個simple-output內,於是就重複了。

[-隱藏]

回應 simon88

1

pcschoolleo 說:

我知道原因,只是不知道如何解決

2012-04-26 09:45:29

2

pcschoolleo 說:

我去官方jquery提問,有人回答,而且我測試確認可以執行,我會找時間放到github或jquery外掛分享給大家,謝謝大家。
答案為
$(function() { // Shorthand for $(document).ready(function() {
$('.simple-input').each(function(i) {
$(this).googleTranslate({target: '.simple-output:eq(' + i + ')',
targetLang : 'zh-tw',
apiKey : 'AIzaSyCQNwankbSubzm'
});
});
});

2012-05-01 11:26:30

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

哈哈
毆飛
開心
抗議
落寞
睡覺
噴鼻血
No
失神
爆氣
疑惑
Orz
不耐煩
喜歡
臉紅
噎到
放手
打嗑睡
掰掰
放馬過來
敲碗
簽名
筆記
拍手
沙發
XD
無言
偷笑
翻桌
謝謝
灑花
抱抱
逃跑
炸死你
愛你
生日快樂
rock
嘆氣
下雨
衝刺
搖頭
拍照
打球
健身
駭客
射門
泡湯
踹共
唱歌
做菜

上傳圖片
▼ ADVERTISEMENT ▼

邦友收藏動態

最新收藏最多人推最多人收

新增收藏

收藏到iT邦 書籤小工具

「收藏到iT邦」讓你更方便收藏站外文章。可用下面其中一種方法安裝:

  • 拖拉上面的「收藏到iT邦」連結到瀏覽器的書籤列
  • 在連結上方按右鍵,選擇「加到我的最愛」

之後看到喜歡的站外文章,只要點一下「收藏到iT邦」,就會收藏起來囉

安裝「收藏快捷鍵」

安裝「收藏快捷鍵」,可以讓邦友直接透過Google工具列上的按扭,快速收藏站內、站外的網頁。

訂閱每日摘要

iT邦幫忙即日起提供「每日摘要」給尚未註冊的邦友,只要輸入您的E-mail,每日就可以收到最新的發問與分享