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作为参数传递给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">[email protected]</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>


目标是提取:[email protected]并将其作为参数传递给服务器方法。该方法应该创建一个Window,但这是另一回事。

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

最佳答案

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

要选择一个具有多个类名称的元素,选择器在类名称之间不应使用空格,如.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();

关于javascript - onclick定义的text-var在日志中返回空字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14747818/

10-09 18:25