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')) { ... }
答案 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>
开始,
第二
totalSale = $(this).parents('.' + $class).siblings('.' + $class + ':last').find('.totalSale');
从第一个<input>
开始,
一切都停在#2。
您应该阅读有关jQuery starting here的更多信息。
<强>劝强>
你应该从你不完全理解的代码示例中了解你想要理解的内容。
如果您不知道自己想要了解什么,这个社区将无济于事。
必读:How to create a Minimal, Complete, and Verifiable example