Add and Remove class to click a dynamic Button

前端 未结 2 1971
太阳男子
太阳男子 2021-01-26 12:11

Trying to Add and Remove class to click dynamic Buttons, means this button get class dynamically like this:

相关标签:
2条回答
  • 2021-01-26 12:53

    DEMO

    $('.label a').each(function () {
        var $this = $(this);
        $this.closest('li').addClass($this.text());
    });
    
    // Combine This
    $('button').each(function () {
        var liInd = 0;
        var cl = '';
        var txt = '';
        var clses = [];
        var ind = $('button').index($(this)) + 1;
        $('li').each(function () {
            if (clses.indexOf($(this).attr('class')) === -1) {
                clses.push($(this).attr('class'));
                liInd = liInd + 1;
            }
            if (ind === liInd) {
                cl = $(this).attr('class');
                txt = $(this).find('a').text();
                return false; //break
            }
        });
        $('button:nth-child(' + ind + ')').addClass(cl);
        $('button:nth-child(' + ind + ')').text(txt);
    });
    $(document).on('click', 'button',function(e){
        var textClass = $.grep(this.className.split(" "), function(v, i){
           return v.indexOf('text') === 0;
        }).join();
        console.log(textClass);
        $('li').removeClass('show').addClass('hide')
        $('li').each(function(){
        	if($(this).hasClass($.trim(textClass))){
            	$(this).removeClass('hide').addClass('show');
            } else {
                $(this).removeClass('show').addClass('hide');
            }
        })
    })
    .show{display:list-item;}
    .hide{display:none;}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <div id="main-id">
            <button class="one"></button>
            <button class="two"></button>
            <ul>
                <li>
                    <!--List 1-->
                    <div class="label">
        <a href="#">text1</a>
    
                    </div>
                </li>
                <li>
                    <!--List 2 is Same-->
                    <div class="label">
        <a href="#">text1</a>
    
                    </div>
                </li>
                <li>
                    <!--List 3 is different-->
                    <div class="label">
        <a href="#">text2</a>
    
                    </div>
                </li>
            </ul>
        </div>

    0 讨论(0)
  • 2021-01-26 13:09

    Here is an alternative solution

    $('button').each(function () {
        var liInd = 0;
        var cl = '';
        var txt = '';
        var clses = [];
    
        var ind = $('button').index($(this)) + 1;
    
        $('li').each(function () {
            if (clses.indexOf($(this).attr('class')) === -1) {
                clses.push($(this).attr('class'));
                liInd = liInd + 1;
            }
    
            if (ind === liInd) {
                cl = $(this).attr('class');
                txt = $(this).find('a').text();
                return false; //break
            }
        });
    
        if (txt != '') {
            $('button:nth-child(' + ind + ')').addClass(cl);
            $('button:nth-child(' + ind + ')').text(txt);
        }
    });
    
    $('button').click(function () {
        if ($(this).attr('class')[0] == 'all') {
            showAll();
            return false; // end this function
        }
    
        var allCls = $(this).attr('class').split(' ');
    
    
    
        $('li').each(function () {
    
            if (allCls.indexOf($(this).find('a').text()) > -1) {
                $(this).closest('li').removeClass('show').addClass('hide');
            } else {
                $(this).closest('li').removeClass('hide').addClass('show');
            }
        });
    });
    
    function showAll() {
        $('li').removeClass('hide').addClass('show');
    }
    

    Fiddle: https://jsfiddle.net/taleebanwar/yaLm4euk/13/

    0 讨论(0)
提交回复
热议问题