Wait until HTML elements gets a class then do something

前端 未结 3 545
你的背包
你的背包 2021-02-08 22:16

I am waiting for the document.ready event in order to do something on my page.

Alas some other script, which I cannot change, has not worked its magic yet once my script

相关标签:
3条回答
  • 2021-02-08 22:50

    Something like this (pseudo code) :

    var timer = setInterval(function() {
       if (element.className=='someclass') {
           //run some other function 
           goDoMyStuff();
           clearInterval(timer);
       }
    }, 200);
    

    or listen for the element to be inserted:

    function flagInsertedElement(event) {
       var el=event.target;
    }
    document.addEventListener('DOMNodeInserted', flagInsertedElement, false);
    

    jQuery version:

    $(document).on('DOMNodeInserted', function(e) {
        if (e.target.className=='someclass') { 
            goDoMyStuff();
        }
    });
    

    There's also the liveQuery plugin:

    $("#future_element").livequery(function(){
        //element created
    });
    

    Or if this is a regular event handler, delegated events with jQuery's on();

    0 讨论(0)
  • 2021-02-08 22:58

    You could trigger some event once you added the class.

    Example:

    $('#ele').addClass('theClass');
    $(document).trigger('classGiven')
    
    
    $(document).bind('classGiven',function(){
        //do what you need
    });
    
    0 讨论(0)
  • 2021-02-08 23:06

    I'm sorry if I got your question wrong but why not just doing something plain as this on document.ready ? :

    $("#myelement").addClass('myclass');
    
    if($("#myelement").hasClass('myclass')) {
        alert('do stuff here');
    }
    
    0 讨论(0)
提交回复
热议问题