【问题标题】:Cannot set property '_renderItem' of undefined无法设置未定义的属性“_renderItem”
【发布时间】:2015-04-28 05:58:42
【问题描述】:

这是我的代码... 谁能帮帮我?

$(document).ready(function() {

//$('#search input[name="filter_name"]').attr("x-webkit-speech", "x-webkit-speech")
$('#search input[name="input-search-menu"]').autocomplete({
    source: function(request, response) {
        $.ajax({
            url: 'index.php?route=module/search_suggestion/ajax',
            dataType: 'json',
            data: {
                keyword: request.term
            },
            success: function(json) {
                response($.map(json, function(item) {
                    return {
                        fields: item.fields,
                        value: item.href
                    }
                }));
            }
        });
    },
    minLength: 1,
    select: function(event, ui) {
        if (ui.item.value == "") {
            return false;
        } else {
            location.href = ui.item.value;
            return fse;
        }
    },
    open: function() {
        $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
    },
    close: function() {
        $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
    },
    focus: function(event, ui) {
        $('#search input[name="filter_name"]').val(ui.item.label);
        return false;
    }
}).data("ui-autocomplete")._renderItem = function(ul, item) {

    var elements = [];
    $.each(item.fields, function(field_name, field) {
      if (field != undefined && field[field_name] != undefined && field[field_name]) {

        var field_html = '';            
        if (field_name == 'price') {
          if (field.special) {
            field_html = '<span class="price-old">' + field.price + '</span><span class="price-new">' + field.special + '</span>';
          } else {
            field_html = field.price;
          } 
        } else {
          field_html = field[field_name];
        }

        if (field.label != undefined && field.label.show != undefined && field.label.show) {
          field_html = '<span class="label">' + field.label.label + '</span>' + field_html;
        }
        if (field.location != undefined && field.location == 'inline') {
          field_html = '<span class="' + field_name + '">' + field_html + '</span>';
        } else {
          field_html = '<div class="' + field_name + '">' + field_html + '</div>';
        }

        elements.push({sort: field.sort, html: field_html});
      }
    });

    // sort
    elements.sort(function(a, b){return a.sort-b.sort});

    // implode
    var elements_html = '';
    $.each(elements, function(index, element) {
      if (element != undefined) {
        elements_html = elements_html + element.html;
      }
    });     

    return $("<li></li>")
        .data("item.autocomplete", item)
        .append('<a class="search-suggestion">' + elements_html + '</a>')
        .appendTo(ul);
};

});

`我无法在我的 js 文件上设置属性“_render_item”。这停止了​​我的 js 文件的工作。谁能帮我写代码?

提前致谢

【问题讨论】:

  • 你在哪里设置_render_item属性?

标签: javascript jquery ajax


【解决方案1】:

某些与自动完成相关的命名约定在 v1.9 中的 jQuery UI 并在 v1.10 中被完全删除(参见 http://jqueryui.com/upgrade-guide/1.10/#autocomplete)。

你可以在Cannot set property '_renderItem' of undefined jQuery UI autocomplete with HTML查看它,因为它很好地解释了这一点。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 2021-11-27
    • 2022-10-30
    • 2023-02-10
    • 2015-12-07
    • 2013-05-28
    • 2016-02-23
    相关资源
    最近更新 更多