I want my code to execute when an element is shown.
$('.test').on('click', function(){
    $('.sub-slider').toggle();
    $('.sub-slider').on('show', function(){
     console.log("hi");
    });
});
I want my code to execute when an element is shown.
$('.test').on('click', function(){
    $('.sub-slider').toggle();
    $('.sub-slider').on('show', function(){
     console.log("hi");
    });
});
 
    
    Try this:
var visible = $("#ele"/*select the element*/).is(":visible");
console.log(visible);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ele"></div>You can delete the div to test it.
 
    
    Try like this.Wrap the function inside the toggle.And check the element is display property is block then pass your stuff
 $('.test').on('click', function() {
  $('.sub-slider').toggle(function() {
    if ($(this).css('display') == 'block') {
      console.log('showing')
    }
  });
});
Example
 $('.test').on('click', function() {
      $('.sub-slider').toggle(function() {
        if ($(this).css('display') == 'block') {
          console.log('show')
        }
        else{
         console.log('hide')
        }
      });
    });<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="test">click</button>
<p class="sub-slider">text</p>