0

总结:添加的所有项目的类别需要与项目名称一起保存。然后,这允许在提交时传输此类别信息,以便使用正确的查询(与正确的表相关)。想法?

我需要做的是,当用户选择他们正在搜索的内容(从自动完成下拉菜单中)时,类别信息(也就是它的类别名称)也会记录在某处。

这个想法是,当用户按下搜索时,他们正在寻找的短语以及类别名称也会被发送。推理:您有 3 张表格,一张包含有关汽车的信息,一张有关动物的信息,一张有关外星人的信息。如果已经确定了与它相关的表(从类别信息中),则不需要查询所有 3 个。

搜索所有 3 个的问题是您可能有一个名叫海绵鲍勃的外星人,以及一个动物等。

这是我们正在处理的代码(来自 jQueryUI 网站):

$.widget( "custom.catcomplete", $.ui.autocomplete, {
    _renderMenu: function( ul, items ) {
        var self = this,
            currentCategory = "";
        $.each( items, function( index, item ) {
            if ( item.category != currentCategory ) {
                ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
                currentCategory = item.category;
            }
            self._renderItem( ul, item );
        });
    }
});

我的想法是在类别完成功能中,在选择事件下:

$(function() {
        $( "#search" ).catcomplete({
            delay:0,
            source: "query/encode-json.php?term="+ $("#search").val(),
            select: function(event, ui){

            }
        });     
    });

与所选项目关联的类别可以发送/存储在某处。我遇到的问题是我可以在小部件功能(item.category)中获取此信息,但此信息在选择事件中(直接)不可用。这是有道理的,因为小部件只填充列表,它不处理选择事件(我在想),但不知何故我需要能够访问这些信息。我的想法是找到索引并从那里向后工作,但这似乎不起作用。另一个选项(更基本的)是每次循环小部件时,都会将类别名称添加到 li 元素的标题字段中。

我已经尝试了几个小时,但无论哪种解决方案都没有取得任何进展。

感谢您提供的任何光亮:)

4

1 回答 1

0

想出了一个办法。这是我最终得到的代码:

$(".ui-menu-item").live('click', function(e) {
        cat = $(this).prevAll(".ui-autocomplete-category:first").text();
    });

起初我对它的点击面有疑问,因为我没有意识到我需要它的实时面等。所以正在尝试这个:

$(".ui-menu-item").click(function () {

    });

因此,它所做的就是选择其中一个搜索结果(点击)时,上面的类别的文本被拍摄并分配给CAT变量。这个变量我已经设置为传输到重新搜索的搜索页面:

 function test(){
                        var i = document.createElement('input');
                        i.type = 'hidden';
                        i.name = 'cat';
                        i.value = cat;
                        document.getElementById("searchForm").appendChild(i);
                    }

资料来源:jquery 找到与类最近的上一个兄弟

于 2012-08-07T09:25:30.310 回答