简体   繁体   English

如何根据 Jquery 中的值向子 div 动态添加和删除 class

[英]How to add and remove class dynamically to child div based on value in Jquery

if data value is matching with any div inside requestsampler class then dynamically add new class(sampleClass) to test class inside the matching container如果数据值与 requestsampler class 内的任何 div 匹配,则动态添加新类(sampleClass)以测试匹配容器内的 class

js: js:

var data = **somevalue**;

data is dynamic value数据是动态值

html: html:

<div class="requestsampler">
  <div class= "**somevalue**">
    <div class="test">  // add new class <div class="test sample class">
     //
    </div>
    
  </div>
   <div class= "somevalue2">
     <div class="test">
      //
    </div>
    
  </div>
   <div class= "somevalue3">
     <div class="test">
      //
    </div>
    
  </div>
</div>

tried not working:试过不工作:

$('.requestsampler').hasClass(data) {
  $(.'requestsampler .`${data}` .test').addClass('sampleclass');
}

You could simply use Attribute Contains Prefix Selector [name|="value"] for more info please refer http://jqapi.com/#p=attribute-contains-prefix-selector.您可以简单地使用属性包含前缀选择器 [name|="value"] 了解更多信息,请参阅http://jqapi.com/#p=attribute-contains-prefix-selector。 . . below is the code for your example.下面是您的示例的代码。

 $(document).ready(()=>{ var data = "somevalue"; $('div[class|="'+data+'"]>.test').addClass("sampleclass"); })
 .sampleclass{ background-color:red; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="requestsampler"> <div class= "somevalue"> <div class="test"> // add new class <div class="test sample class"> // </div> </div> <div class= "somevalue2"> <div class="test"> // </div> </div> <div class= "somevalue3"> <div class="test"> // </div> </div> </div>

you could try jquery elem.find() api.你可以试试 jquery elem.find() api。 And also use className with string and numeric combination instead of symbols并且还使用带有字符串和数字组合的className而不是symbols

i have changed the condition with element find length.我用元素查找长度改变了条件。 Because hasClass() only perform on the selector element.因为hasClass()只对选择器元素执行。 So if you are using find() they will find the matched element.所以如果你使用find()他们会找到匹配的元素。

And also your if condition does not make any sense, without condition is also working same而且你的 if 条件没有任何意义,没有条件也一样

Updated更新

If you need first test element.如果您需要第一个test元素。 use .eq(0) or else use different className for the first test element使用.eq(0)或者对第一个测试元素使用不同的 className

 var data = "somevalue"; if ($('.requestsampler').find(`.${data}`).length > 0) { $('.requestsampler').find(`.${data}`).find('.test').eq(0).addClass('sampleclass'); }
 .sampleclass { background: red; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="requestsampler"> <div class="somevalue"> <div class="test"> // add new class <div class="test sample class"> sample </div> </div> <div class="somevalue2"> <div class="test"> // </div> </div> <div class="somevalue3"> <div class="test"> // </div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM