下拉字母顺序:第一行除外 - jQuery

时间:2015-04-07 21:55:45

标签: php jquery

我按字母顺序列出了jQuery和不同的语言,它运行得很好,除了第一行/项“选择类别”也按字母顺序列出,我希望它保持在顶部,总是先。 “选择类别”当然是唯一没有价值的类别。有没有解决方案?

<!-- Group -->
    <div class="control-group">
        <label class="control-label" for="lastname"><?php echo $this->lang->line('category');?></label>
        <div class="controls">
            <select class="span12" name="catagory" id="catagory">
                <option value="" ><?php echo $this->lang->line('select_the_category');?></option>
            <?php
                $lang_code = $page_data['lang_code'];
                echo $lang_code;
                foreach ($page_data['catagory'] as $key => $value) {
                    $value = (array) $value;
                    echo '<option value="'. $value['event_type_id'] .'">'. $value['event_type_name_'.$lang_code] .'</option>';
                }
            ?>
            </select>
        </div>
    </div>
<!-- // Group END -->

的jQuery

var mylist = $('#catagory');
var listitems = mylist.children('option').get();
listitems.sort(function(a, b) {
    return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase());
})
$.each(listitems, function(idx, itm) { mylist.append(itm); });

2 个答案:

答案 0 :(得分:0)

使用usort上的php $page_data['catagory']函数删除jQuery排序。

自定义用户:

usort($page_data['catagory'], function ($a, $b) use ($lang_code) {
    $idx = 'event_type_name_'.$lang_code;
    return strcmp($a[$idx], $b[$idx]);
});

答案 1 :(得分:0)

由于您知道“选择类别”选项没有值,您可以将其从排序功能中过滤出来,并仅使用值对options进行排序。

var mylist = $('#catagory');
var listitems = mylist.children('option').filter(function(){return $(this).val() != "";}).get();

http://jsfiddle.net/daCrosby/jzdj0kLh/