这两个jquery表达式的含义是什么?

时间:2016-10-29 10:03:05

标签: javascript php jquery web

HTML CODE

<tr class="roti">

    <td class="ts" rowspan="2">
        <input type="text" class="form-control totalSale" id="totalSaleAmountForRoti" name='totalSaleAmountForRoti' value="0" readonly>
    </td>

</tr>

<tr class="roti">
    column related class="form-control totalSale"
</tr>

它们和它们的含义有什么区别?

var $class = $(this).parent().parent().attr('class');

1)

totalSale = $(this).parents('.' + $class).find('.totalSale');

2)

totalSale = $(this).parents('.' + $class).siblings('.' + $class + ':last').find('.totalSale');

以下代码的含义是什么?

if ($(this).parent().siblings().children().hasClass('.totalSale')) { ... }

1 个答案:

答案 0 :(得分:0)

首先:您的代码中缺少一些HTML 在第二个<tr>块中,HTML无效。

第二:对您的问题的简短回答是:没有差异。两个陈述都失败了。

<小时/> 小心阅读?

假设HTML更像是这样:

<tr class="roti">
    <td class="ts" rowspan="2">
        <input type="text" class="form-control totalSale" id="totalSaleAmountForRoti" name='totalSaleAmountForRoti' value="0" readonly>
    </td>
</tr>

<tr class="roti">
    <td class="ts" rowspan="2">
        <input type="text" class="form-control totalSale" id="other_id" name='other_name' value="other_value" readonly>
    </td>
</tr>

然后,在您的代码中,您定义变量$class

var $class = $(this).parent().parent().attr('class');

如果找到,将设置为 grand-parent的属性类的值。

此变量定义调用由事件处理程序或绑定到元素的函数触发 由于$(this),我很确定。

我们假设它是第一个<input> 所以$ class =“roti”。

.parent()是元素包装...
.parent()。parent()是元素包装的第二级...
等等。
好吗?

,然后
这里有两个声明,试图在{strong>集合
元素的子元素元素中.find()一个具有“totalSale”类的元素。
是的,这句话需要阅读两次。

在这两种情况下,集合都是method chaining的结果 并将其结果存储为“totalSale”变量...如果找到。


现在,您的HTML中有两个 class “totalSale”元素。
让我们看一下第一个声明:

第一

totalSale = $(this).parents('.' + $class).find('.totalSale');

从第一个<input>开始,

  1. 检查父集合中是否找到class = $ class(“roti”)的元素==&gt;结果是未定的。
  2. 抱歉,到此为止。
  3. 它不会尝试在未定义的集合中查找具有“totalSale”类的子元素。
  4. 第二

    totalSale = $(this).parents('.' + $class).siblings('.' + $class + ':last').find('.totalSale');
    

    从第一个<input>开始,

    1. 检查父集合中是否找到class = $ class(“roti”)的元素==&gt;结果是未定的。
    2. 对不起,也在那里结束。
    3. 它不会检查“未定义”集合中是否有一个带有“roti”类的siblings元素......当然也找不到last
    4. 它不会检查是否找到具有“totalSale”类的子项。
    5. 一切都停在#2。


      您应该阅读有关jQuery starting here的更多信息。

      <强>劝

      你应该从你不完全理解的代码示例中了解你想要理解的内容。

      如果您不知道自己想要了解什么,这个社区将无济于事。

      必读:How to create a Minimal, Complete, and Verifiable example