0

I have a div with custom attribute posx

<div class="js__scroll__canvas" posx="0">

Another js plugin set dynamic value to posx on scroll.

I try to catch posx is change.

$(".js__scroll__canvas").attr( "posx" ).change(function() {
    alert( "Handler for .change() called." );
}); 

Nothing alerts. How to catch it? Help please

Alex
  • 55
  • 1
  • 7

2 Answers2

1

You can try with setting up an event and triggering it while data gets updated. Please check below snippet if it can help you.

//Set up an event
$(".js__scroll__canvas").on('datachange', function(e, key){
     alert( "Handler for .datachange() called." );
});

// Then trigger it when you data gets updated 
$(".js__scroll__canvas").data('posx', 123).trigger('datachange');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="js__scroll__canvas" posx="0">
B. Dave
  • 81
  • 3
0
<div class="js__scroll__canvas" posx="0">

$(".js__scroll__canvas").attr( "posx" ) return a string "0". So, it cannot be used as a selector to call change method.

If you want to log, try to create a function:

var logging = function () {
    console.log('the attribute has been changed.');
};

var dowork = function () {
    // try to update attribute    
    $(".js__scroll__canvas").attr( "posx", "1" );

    // logging
    logging();
};
Tân
  • 1
  • 15
  • 56
  • 102