0

在原始 jQuery 中,您可以使用

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 或ajax。

世界末日?谢谢

4

1 回答 1

1

要将网页中的值传递回服务器,您可以使用 jQuery 进行 ajax 回调。类似于以下内容:

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

#callback:value: 消息的第一个参数(即回调块)将在服务器端对其第二个参数(即一个javascript表达式)的客户端评估值进行评估。

看一下 JQAjax 层次结构。您会注意到#callback:value: 方法的许多变体(例如,使用json、乘客等...)。

此外,您可以将 #callback:value: 回调与响应呈现的 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。

于 2013-01-24T21:53:46.517 回答