如何检查HTML元素是否包含另一个?

时间:2017-03-14 08:50:04

标签: javascript jquery html css

我想检查我的标题<h3>是否有highlight类,所以我创建了How to check if element contains specific class attribute,但我不确定如何将其与我的用例相符,因为它& #39;不是包含类的<h3>,而是包含其中的范围: enter image description here

我试着做这个代码:

$('.liContainer div h3').each(function(i, obj) {
      var contains = false;
      String classes = obj.getAttribute("class");
      for (String c : classes.split(" ")) {
          if (c.equals("highlight")) {
              contains = true;
          }
      }
      if(contains){
        obj.classList.remove("highlight");
      }
    });

但我在实际代码中遇到错误:

imports/ui/layout.js:42:13: Unexpected token (42:13)

并且它是String classes = obj.getAttribute("class");

有人可以帮助我让它有效吗? [编辑]在你的回答的帮助下我现在在这里:

'click .liContainer div h3': function(e){
       if ( $(e.target).find("span").is(".highlight") ) {
            console.log("it was highlighted");
           $(e.target).find("span").removeClass('highlight');
       }
  },

它的确有效,谢谢大家

10 个答案:

答案 0 :(得分:2)

    I hope it will help you

        $('.liContainer div h3').each(function(i, obj) {
           if ( $(this).find("span").is(".highlight") ) {
               // do something
           }
        });

    **can you just help me to do the action only on the clicked h3?**

    If `click` action:

        $('.liContainer div h3').click(function() {
           if ( $(this).find("span").is(".highlight") ) {
               // do something
           }
        });

    I use your code, and change the content of the `each` loop.
    You loop each `<h3>` and check if child `<span>` has class `.highlight`, then you do something...

    The above Code can also be written as follows:

    $('.liContainer div h3').click(function() {
           if ( $(this).find("span.highlight") ) {
               // do something
           }
        });
Hope this works fine.

答案 1 :(得分:1)

$('h3').filter(function(){
   return $(this).find('span.highlight').length != 0;
}) // do something with it

答案 2 :(得分:1)

一种粗略的方式来了解您是否不知道有子选择器

$('#nameMachine *').hasClass('yourClass'); // either true or false

答案 3 :(得分:1)

Try using `has` selector as given below code :

    $('.liContainer div h3:has(span.highlight)').each(function(){
       // code here
    });

答案 4 :(得分:1)

由于您使用的是jquery,这个简单的解决方案如何:

$('.liContainer div h3 .highlight').removeClass('highlight');

答案 5 :(得分:1)

您可以尝试以下方式:

if( $("h3", "#nameMachine").has(".highlight") ) {
// do something 
}

或更具体的版本:

if( $("> h3", "#nameMachine").has("span.highlight") ) {
// do something
}

答案 6 :(得分:1)

$('span.highlight','.liContainer div h3').removeClass('highlight')

请注意,第二个css选择器用于确定搜索第一个css选择器的范围。

答案 7 :(得分:1)

find()将搜索所有子元素。因此,如果有想要的课程,其长度将为1 else length is 0

$('.liContainer div h3').each(function(i, obj) {
    var hasClass = $(obj).find(".highlight");            
      if (hasClass.length) {
        hasClass[0].classList.remove("highlight");
      }
});

答案 8 :(得分:0)

这样做。 hasClass文档在这里

$("#nameMachine h3").hasClass("highlight")

答案 9 :(得分:-1)

if ($('#parent').find('#child').length) {

 }