1

I'm trying to fill selects with json data from a web service. I'm getting error 'Object doesn't support this property or method.' when I do this $(this).html(options.join('')); Any ideas what I'm doing wrong?

;(function($) {

    $.fillSelect = {};

    $.fn.fillSelect = function(url, map) {
        var jsonpUrl = url + "?callback=?";        
        $.getJSON(jsonpUrl, function(d) {
           var options = [];
           var txt = map[0];
           var val = map[1];
           options.push('<option>--Select--</option>');
           $.each(d, function(index, item) {
                options.push('<option value="' + item[val] + '">' + item[txt] + '</option>');
           });
           $(this).html(options.join(''));
           //getting error  Object doesn't support this property or method
        };
    };
})(jQuery);
1
  • When you do alert(this); before that line, what do you get? Commented May 13, 2010 at 23:57

1 Answer 1

3

The problem is the variable this. In the context you're using, this is probably referring to the jQuery object itself (that is, not the result set). Try this:

$.fn.fillSelect = function (url, map) {
    var $t = this;     // (this) is the jQuery result set

    $.getJSON( ... blah blah,

        $t.html(options.join(''));
    )
}
Sign up to request clarification or add additional context in comments.

2 Comments

Yes you were absolutely right 'this' was referring to the jQuery object itself. Thanks for your help.
@user331884 - if you find an answer helpful, vote it up and accept it by clicking on the links up to the left

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.