jQuery Autocomplete .data(“autocomplete”) is undefined

前端 未结 6 1451
盖世英雄少女心
盖世英雄少女心 2021-02-03 20:58

When I try to implement auto-complete using the code below I get an error stating:

.data(\"autocomplete\") is undefined

How ever if I remove th

6条回答
  •  梦毁少年i
    2021-02-03 21:35

    I had the same problem and based on the 1.10.0 version of jquery ui, I think you should try

    data('uiAutocomplete')
    

    instead of

    data('autocomplete')
    

    Based on Johnny's comment, I checked how the .data() function works. Yes, jQuery returns null from .data() call when selector does not find any items.

    So if there is no matching element for your selector, then no autocomplete object is created and added to the custom data object.

    So it seems it is better to do this:

        $(selector).autocomplete({ your autocomplete config props here });
        if ( $(selector).data() ) {
    
        // some jQueryUI versions may use different keys for the object. so to make sure,
        // put a breakpoint on the following line and add a watch for $(selector).data(). 
        // then you can find out what key is used by your jQueryUI script.
    
            var ac = $(selector).data('uiAutocomplete');
            if ( ac ) {
               // do what you want with the autoComplete object. below is the changed version of an example from jqueryUI autocomplete tutorial
    
               ac._renderItem = function(ul, item) {
                    return $("
  • ") .append("" + item.label + "") .appendTo(ul); }; } }
提交回复
热议问题