如何使用gwt查询获取与按钮相邻的文本框的值

如何使用gwt查询获取与按钮相邻的文本框的值,gwt,jquery-selectors,gwtquery,gquery,Gwt,Jquery Selectors,Gwtquery,Gquery,我有一个这样的自定义小部件,它基本上是一对文本框和按钮 <g:VerticalPanel> <b:Label>Lower Limit</b:Label> <b:TextBox ui:field="lowerLimit" addStyleNames="lowerLimitTextBox"></b:TextBox> <b:Button icon="COPY" addStyleNames="copyAll cop

我有一个这样的自定义小部件,它基本上是一对文本框和按钮

<g:VerticalPanel>
    <b:Label>Lower Limit</b:Label>
    <b:TextBox ui:field="lowerLimit" addStyleNames="lowerLimitTextBox"></b:TextBox>
    <b:Button icon="COPY" addStyleNames="copyAll copyAllLower">Copy To All</b:Button>
</g:VerticalPanel>

<g:VerticalPanel>
    <b:Label>Upper Limit</b:Label>
    <b:TextBox ui:field="upperLimit" addStyleNames="upperLimitTextBox"></b:TextBox>
    <b:Button icon="COPY" addStyleNames="copyAll copyAllUpper">Copy To All</b:Button>
 </g:VerticalPanel>

下限
抄送所有人
上限
抄送所有人
一个页面上有许多这样的小部件。 当一个按钮被点击时,我希望能够选择它左边的文本框,并将该值复制到所有相应的小部件中

我可以选择按钮,但不知道如何选择左边的文本框。 有人能帮忙吗


我正在添加jQuery selectors标记,因为该选择器可能类似于GwtQuery的选择器。

首先,您必须知道垂直面板的呈现方式,以便您可以确定dom中的文本框在哪里

VerticalPanel
被呈现为一个表,每个小部件被定位到一个结构中:
widget

在您的情况下,您可以使用
closest()
prev()
获取按钮的上一个
tr

$(按钮).closest(“tr”).prev();
然后使用
find()

$(按钮)。最近的(“tr”).prev().find(“输入”)
因此,使用gquery查找
小部件的功能,UI中每个按钮的代码可能如下所示:

按钮。添加ClickHandler(新的ClickHandler(){
公共作废一次点击(点击事件){
TextBox box=$(按钮)。最近的(“tr”).prev().find(“input”).widget();
对于(TextBox b:$(“.gwt TextBox”).widgets(TextBox.class)){
b、 setValue(box.getValue());
}
}
});
虽然如果您想使用
gquery
一次增强所有按钮,但一切都要简单得多:

$(“.gwt按钮”)。单击(新建函数(){
公共空间f(){
字符串值=$(this.closest(“tr”).prev().find(“input”).val();
$(“.gwt TextBox”).val(值);
}
});

您能为
按钮(
按钮#getElement
)获取
元素
,然后为其获取上一个同级元素(
元素#getPreviousSiblingElement
)吗?也许您需要浏览多个以前的同级?我的GWT查询似乎没有get previous sibling元素函数。是的,gquery具有
prev()
。您必须知道,
VerticalPanel
正在用
tr
td
包装您的小部件。见下面我的答案。