Jquery查找父元素,查找具有特定数据的第一个元素

时间:2016-07-15 07:33:34

标签: jquery

我想检索具有{{_tagName_类的第一个元素的父级的_classname_data-droprow="7"和数据信息(在这种情况下为".item assigned") 1}}。

data-rowtm="1"

类似于:

<table class="otable">
    <tbody>
        <tr class="batt" data-rowbatt="1">
            <td class="drop droppable" data-droprow="3"></td>
            <td class="drop droppable" data-droprow="4"></td>
            <td class="drop droppable" data-droprow="5"></td>
            <td class="drop droppable" data-droprow="6"></td>
            <td class="drop droppable" data-droprow="7">
                <div class="item assigned" data-rowtm="1" data-endtm="13" data-starttm="7"></div>
            </td>
            <td class="drop droppable" data-droprow="8"></td>
            <td class="drop droppable" data-droprow="9">
        </tr>          
    </tbody>
</table>

3 个答案:

答案 0 :(得分:1)

你拥有的几乎是正确的,使用.parent()你可以实现你可以选择包含给定数据的元素的父级。演示https://jsfiddle.net/4o3m6euv/1/

var variable=1;//Or whatever you search for...
var $div = $(".drop.droppable [data-rowtm='" + variable + "']").parent();
alert($div.data('droprow'));//Gives '7'
alert($div.prop('class'));//Gives 'drop droppable'
alert($div.prop('tagName'));//Gives 'TD'

答案 1 :(得分:0)

var $div = $(".drop droppable").find("[data-rowtm='" + variable + "']");

...非常接近,你只想在.之后使用.drop代替空格:

var $div = $(".drop.droppable").find("[data-rowtm='" + variable + "']");
// ----------------^

或者,一个一个:

var $div = $(".drop.droppable [data-rowtm='" + variable + "']");

答案 2 :(得分:0)

您需要.filter() td元素:

&#13;
&#13;
var td = $('.otable .drop.droppable').filter(function(){
   return $(this).find('.item.assigned').length !== 0;
});

console.log('tag ::::->', td.prop('tagName'))
console.log('data-droprow ::::->', td.data('droprow'))
console.log('class ::::->', td.attr('class'))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="otable" width='500' border='1'>
  <tbody>
    <tr class="batt" data-rowbatt="1">
      <td class="drop droppable" data-droprow="3"></td>
      <td class="drop droppable" data-droprow="4"></td>
      <td class="drop droppable" data-droprow="5"></td>
      <td class="drop droppable" data-droprow="6"></td>
      <td class="drop droppable" data-droprow="7">
        <div class="item assigned" data-rowtm="1" data-endtm="13" data-starttm="7">dd7</div>
      </td>
      <td class="drop droppable" data-droprow="8"></td>
      <td class="drop droppable" data-droprow="9">
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;