在特定路径/ xpath下按类别删除不包含“X”的div

时间:2014-10-12 09:28:22

标签: javascript jquery html css xpath

<div id="container-main" name="#top">
  <div class="col-sm-12">
    <div id="view" ui-view="" autoscroll="" class="ng-scope">
      <div ng-include="template == 'hover' ? 'templates/hover.html' : null" class="ng-scope">
        <div class="chart-wrap--hover clearfix ng-scope">

          <div class="card--sml card--hover ng-scope fff" > Keep </div>
          <div class="card--sml card--hover ng-scope" > Remove </div>

        </div>
      </div>
    </div>
  </div>
</div>

使用Javascript / Tampermonkey我想删除其类中没有"fff"的div,它只是来自特定路径,所以它不会删除所有其他不相关的div。

有没有办法在js中使用Xpath?我需要在"fff"

上删除除xpath: //*[@id="view"]/div[1]/div类之外的div

我已经尝试了几件事并搜索了它,但是我无法解决它。

4 个答案:

答案 0 :(得分:1)

假设您的起点是id =“view”,那么您可以找到超过2个等级.fff:

$('#view > div:first > div > div:not(.fff)').remove()

如果您不希望第一个顶级div移除first或使用eq(n)定位特定儿童。

JSFiddle: http://jsfiddle.net/TrueBlueAussie/cn5xxjne/

答案 1 :(得分:1)

为什么不使用简单的css选择器:

好的@trueaussie建议这将删除任何没有&#34; fff&#34;在字符串中 所以它也会离开

class="testclassnamefff"
class="ffftestclassname"
class="ghjgfffjfkfjkf"

&#13;
&#13;
$('#view  div:first  div div:not([class*=fff])').remove();
&#13;
[class*=fff] {
    border: 5px solid yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container-main" name="#top">
  <div class="col-sm-12">
    <div id="view" ui-view="" autoscroll="" class="ng-scope">
      <div ng-include="template == 'hover' ? 'templates/hover.html' : null" class="ng-scope">
        <div class="chart-wrap--hover clearfix ng-scope">

          <div class="card--sml card--hover ng-scope fff" > Keep </div>
          
          <div class="card--sml card--hover ng-scope dhjdhjdfff" > Keep </div>
          
          <div class="card--sml card--hover ng-scope fffdkldkld" > Keep </div>
          
          <div class="card--sml card--hover ng-scope dsdssdsdfffdsdd" > Keep </div>
          <div class="card--sml card--hover ng-scope" > Remove </div>

        </div>
      </div>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

http://jsfiddle.net/79qu7k4e/1/

答案 2 :(得分:0)

使用jQuery:

$("#view > div:eq(1) > div > div:not(.fff)").remove();

答案 3 :(得分:0)

改编自TrueBlueAussie之前的回答:

$("#view > div:first > div > div:not(.fff)").remove();

示例:http://jsfiddle.net/pnrhLjk9/