从jQuery属性选择器的结果中删除jQuery属性选择器定义的类

时间:2019-04-19 18:19:11

标签: javascript jquery

基本问题,我只想将以指定字符串结尾的所有类定位到以指定字符串结尾的类的所有元素上,并删除这些类。

此代码不起作用,但与我想要的代码很接近:

$('[class$="_active"]').removeClass($('[class$="_active"]'))

$('[class $ =“ _ active”]')返回一个jQuery.fn.init对象,我可以使用 .each(index,item)。我以为它会像 item.removeClass($('[class $ =“ _ active”]')))一样简单,但是下面的代码也不起作用:

$('[class$="_active"]').each(function(index,item){
        item.removeClass($('[class$="_active"]'))
})

removeClass函数不适用于每个函数中的项目。在这一点上,我正在考虑对每个项目进行字符串化,找出“ _active”之前的文本,将其与“ _active”一起从字符串中删除,然后返回重新格式化的结果。但这对于一个我认为有一个基本答案却被我忽略的基本问题来说太复杂了。

2 个答案:

答案 0 :(得分:1)

您可以使用attribute containing selectorattribute ends with selector来获取具有以_active结尾的特定类的所有元素。要首先删除该类,您必须使用String#match方法从类列表中提取特定的类(只有在一个元素有多个类的情况下才需要)。

$('[class$="_active"],[class*="_active "]').each(function(){
    $(this).removeClass($(this).attr('class').match(/\S+_active\b/)[0])
    // or $(this).removeClass(this.className.match(/\S+_active\b/)[0])
})

答案 1 :(得分:0)

只有一个可爱的解决方案

// Select the modal
var modal = document.getElementById('myModal');

// Get the image inside the modal
var img = document.getElementsByClassName('image');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function(){
  modal.style.display = "block";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}

// Select the close button
var span = document.getElementsByClassName("close");

// Close Button 
span.onclick = function() { 
  modal.style.display = "none";
}

这是我的jsfiddle链接,看看 https://jsfiddle.net/dupinderdhiman/mgzf2boL/7/