2013-01-24 10 views
0

在原始的jQuery你可以使用如何在海邊的tableData上方返回tableHeading的值?

var $th = $td.closest('table').find('th').eq($td.index()); 

但是,我怎麼回$th到海邊這樣的話,我可以把它作爲任何人丁我想一個字符串? 示例。

val do:[:e | 
e class = Dictionary ifTrue:[ 
         html tableData 
         onDoubleClick: (html javascript alert: 'double clicked column'); 
         with:[self renderTargets: e on: html] 
          ] 
     ] 

所以基本上我想要的值:

(((html jQuery this) next: 'td') closest: 'table'; find: 'th'; eq: ((html jQuery this) next: 'td') index; html). 

,並把它在

...column', thValue); 

末我不知道的JavaScript,jQuery的阿賈克斯還是那麼好,在海邊之外。

WWLD? 感謝

+0

這就是「你會盧卡斯怎麼辦?」 ? –

+0

是的,是的。 – Dusty

回答

1

要通過從網頁返回給服務器的值,你可以使用jQuery作出AJAX回調。值::

html tableData 
     onDoubleClick: (html jQuery ajax 
          callback: [:v | .. do something with v... ] 
          value: ((((html jQuery this)) closest: 'table') find: 'th' ...) 

第一個參數#回調(即回調塊):沿的線的東西的消息將被評估服務器端與它的第二個參數的客戶端評估值(即一個JavaScript表達式)。

看看在JQAjax層次。您會注意到#callback:value:方法的許多變體(例如,使用json,乘客等)。

此外,您可以將#callback:value:callback與響應呈現ajax回調(如#script:)結合使用以執行腳本客戶端。甚至可以在不同的回調塊之間傳遞值:

html jQuery ajax 
     callback: [:v | theValue := v] 
     value: ((((html jQuery this)) closest: 'table') find: 'th' ...); 
     script: [:s | s << (s alert: theValue)] 

上面的代碼將獲得從jQuery表達式中的值,它序列到服務器,它存儲在變量theValue然後渲染產生一個JavaScript響應顯示該值的警報對話框。 這顯然只是爲了證明什麼是可能的。在這個例子中,對服務器的回調是無用的。如果您不需要服務器端的值,那麼在客戶端上使用純Javascript。

+0

這很有效,我學到了一些新東西。 但是,如果我把 '[:V | html javascript alert:v]' 它不會執行警報。 如果我做 '成績單CR;顯示:v' 我拿到成績單的值(這意味着它)... – Dusty

+0

'HTML表資料onDoubleClick: \t \t \t(HTML JavaScript警告:((((HTML jQuery的這個)最接近的: '表' ; find:'th'; eq:(html jQuery this)index; attributeAt:'id'))));' – Dusty

+0

#callback:value:ajax調用不產生響應客戶端。如果要執行警報客戶端,則需要使用響應呈現回調。我編輯了我的回覆以回答您的其他問題。 –