0
var listname=$(this).parents(".x-grid3-row-table").children(".x-grid3-cell-inner.x-grid3-col-1").text();
console.log(listname);

console.log 返回以下内容:

(an empty string)

你能帮我解释一下为什么 listname 是空的吗?你能告诉我如何将listname 作为参数传递给Ext.Ajax.request 中的服务器端方法吗?

这是来自我生成的页面的 html 代码:

<table class="x-grid3-row-table>
  <tr>
   <td class="x-grid3-col x-grid3-cell x-grid3-td-1 " tabindex="0" style="text-align: left;width: 265px;">
     <div class="x-grid3-cell-inner x-grid3-col-1" unselectable="on">foo_bar@domain.de</div>
   </td>
   <td class="x-grid3-col x-grid3-cell x-grid3-td-2 x-grid3-cell-last " tabindex="0" style="width: 59px;">
      <div class="x-grid3-cell-inner x-grid3-col-2" unselectable="on">
        <span class="free">free</span>
       </div>
   </td>
  </tr>
  <tr class="x-grid3-row-body">
  <!-- 7 Elements Markup down, who all act wrapping for the following -->
    <div class="details">
      <!-- some other markup elements, who also contain data, but are not further interesting-->
      <td class="data"> foo bar detail data </td><!-- not of interest-->
      <td class="edit"><input value="edit" onclick="see function on top" type="button" /> </td>
    </div>
  </tr>
</table>

目标是提取:foo_bar@domain.de并将其作为参数传递给服务器方法。该方法应该制作一个窗口,但这是另一回事。

onclick 调用来自扩展的网格面板主体,它table('.x-grid3-row-table')使用给定的 html 代码包装在 a 中。

4

2 回答 2

2

您的子选择器中的类名之间有一个空格,但是您的标记表明两个类名都是相同的元素。

要选择具有多个类名的元素,选择器不应在类名之间有空格,如.classname1.className2.

var listname=$(this).parents(".x-grid3-row-table").children(".x-grid3-cell-inner.x-grid3-col-1").text();
console.log(listname);

应该管用。

进一步说明: 如果您在类名之间有问题,这意味着您正在尝试选择一个.x-grid3-col-1在类中具有类的元素.x-grid3-cell-inner。这就是父子关系。

编辑:

如果您的按钮在下一行,您可以使用JQuery 的.prev()选择器,并结合使用tr作为父选择器而不是表。

listname=$(this).parents("tr").prev().children(".x-grid3-cell-inner.x-grid3-col-1").text();

或者如果它在同一行,那么简单

listname=$(this).parents("tr").children(".x-grid3-cell-inner.x-grid3-col-1").text();

于 2013-02-07T09:41:43.210 回答
0

可能有一种更简洁的方法,但我想出了这个作为您的按钮单击处理程序,它假定您要查找的 text() 是按钮上方的一个表格行。

    var $rows,button=this,i;
    $rows=$(".x-grid3-row-table tr");
    for(i=0;i<$rows.length;i++){
        // get the button of that row
        // not sure how to as your button is not
        // in a table row with the code you posted
        if($rows[i].getElementsByTagName("input")[0]===
          button){
            break;
        }
    }
    // I assume the button is in a row before the button
    console.log($($rows[i-1])
        .find(".x-grid3-cell-inner.x-grid3-col-1")
        .text()
于 2013-02-07T11:05:20.427 回答