javascript - setting z-index dynamically with JS - Stack Overflow

I would like to change z-index on click on the icon- evry time user clicks the icon the index-z is +1,

I would like to change z-index on click on the icon- evry time user clicks the icon the index-z is +1, but my code doesn't work:

  $(document).on('click', '.icon-layer-up', function() { 
      console.log($(this).parent(".ui-wrapper").css("z-index"));
      var currentIndex = $(this).parent(".ui-wrapper").css("z-index"); 
      if ( currentIndex = "auto" ) {
        currentIndex = 0;
      }
      var num = currentIndex++;
       $(this).parent(".ui-wrapper").css("z-index", num );
    });

I would like to change z-index on click on the icon- evry time user clicks the icon the index-z is +1, but my code doesn't work:

  $(document).on('click', '.icon-layer-up', function() { 
      console.log($(this).parent(".ui-wrapper").css("z-index"));
      var currentIndex = $(this).parent(".ui-wrapper").css("z-index"); 
      if ( currentIndex = "auto" ) {
        currentIndex = 0;
      }
      var num = currentIndex++;
       $(this).parent(".ui-wrapper").css("z-index", num );
    });
Share Improve this question asked Oct 17, 2013 at 1:23 lipencolipenco 1,3785 gold badges16 silver badges31 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

There is a big difference between

if( currentIndex = "auto" ) {

and

if( currentIndex == "auto") {

The first performs an assignment that you don't intend, always returning "auto" as the result and the if statement always runs, resetting currentIndex to 0.

404 is also correct, you don't want to us "num++" in this situation for 2 reasons

  1. it tries to increment the value only after the assignment, which would give you an incorrect value anyway, but...
  2. in your case "num" is actually a string because of how it was acquired. You'll need to convert it to a number to do addition: parseInt(num) + 1

Your problem is var num = currentIndex++;.

currentIndex++ will increment currentIndex to currentIndex + 1, but it will return the original value, so num gets assigned to the original value of currentIndex. Just use var num = currentIndex + 1.

It's not great coding practice to use ++ if all you want to do is add 1. If you're just adding, use + 1.

The first thing that I noticed with your code, which may or may not be a problem, is that you are missing the data parameter for your jQuery on event. You are also going to want to apply your event to document.body rather than document.

$(document.body/*changed*/).on('click', '.icon-layer-up', {}/*added*/, function() {

Next, you are always setting currentIndex to auto and then to 0, rather than checking to see if it equals auto.

if ( currentIndex ==/*fixed*/ "auto" ) {

Furthermore, you are originally setting currentIndex as a string, which will only convert the string to a number, when trying to increment it, the way you are. You must first attempt to convert it to a Number, check to make sure it was a Number, and then increment it.

So altogether the fixed code should be:

  $(document.body).on('click', '.icon-layer-up', {}, function() { 
      console.log($(this).parent(".ui-wrapper").css("z-index"));
      var currentIndex = Number($(this).parent(".ui-wrapper").css("z-index")); 
      if ( isNaN(currentIndex) ) { // if is not a number, set it to 0
        currentIndex = 0;
      }
      var num = currentIndex++;
       $(this).parent(".ui-wrapper").css("z-index", num );
    });

Next, make sure you read about z-index, and understand how it works. z-index will not be applied to elements of a default position of static. Try setting your elements to position: relative;, to which you are trying to apply z-index.

References for z-index:
Understanding CSS z-index
Adding z-index

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745453591a4628383.html

相关推荐

  • javascript - setting z-index dynamically with JS - Stack Overflow

    I would like to change z-index on click on the icon- evry time user clicks the icon the index-z is +1,

    5小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信