Using selectors and $(this) in Jquery Ajax response

前端 未结 4 1826
暗喜
暗喜 2021-01-15 01:39

I am wondering how I use Jquery selectors within the Ajax response. My site has a feed and each main block has a unique ID, but I dont want to uniquly ID every div thats wit

相关标签:
4条回答
  • 2021-01-15 02:09

    Since the ajax is inside the click handler just do this:

    $(...).click(function(){
          var $this = $(this); //<-- reference variable
          //ajax function...
          function(msg){ 
    
             var container = $this.parent().attr('id');   
             alert (container); //returns undefined
    
          }
    })
    
    0 讨论(0)
  • 2021-01-15 02:20

    I assume you're referring to referencing this in a callback function. You can do something like this:

    $('#stuff').click(function() {
        var $this = $(this);
        $.get('...', function() {
            //do stuff with $this
        });
    });
    
    0 讨论(0)
  • 2021-01-15 02:27

    Since the function is an AJAX callback, you can use the context setting:

    $.ajax({
        // ...
        context: this,
        success: function(msg) {
            // Here, 'this' refers to the same object as when ajax() was called.
            var containerId = $(this).parent().attr("id");
            window.alert(containerId);
        }
    });
    

    You can also have the callback function called in the context of the container itself:

    $.ajax({
        // ...
        context: $(this).parent().get(0),
        success: function(msg) {
            // Now, 'this' refers to the container element.
            var containerId = $(this).attr("id");
            window.alert(containerId);
        }
    });
    
    0 讨论(0)
  • 2021-01-15 02:34

    This is a side-effect of the callback function being invoked asynchronously. When it is called, this is no longer what you expect it to be.

    Saving the current value of this in a variable before you create the callback helps:

    var self = this;
    function (msg) {
      var container = $(self).parent().attr('id');   
      alert (container); //returns undefined
    }
    
    0 讨论(0)
提交回复
热议问题