【问题标题】:Word wrap options in a select list选择列表中的自动换行选项
【发布时间】:2010-08-27 20:37:10
【问题描述】:

是否可以在选择列表中包装长选项?

我有一个动态选择列表,其中一些选项很长。我想要太长而无法换行的选项。除此之外,我想缩进这些行。

如果这不可能,我的解决方案是将结果修剪为 n 字符。

这是我所拥有的:

I'm a short option
This is a really really really long option
This one isn't too bad
But whoa look how long I am! I go on forever!

这就是我想要的:

I'm a short option
This is a really really 
    really long option
This one isn't too bad
But whoa look how long 
    I am! I go on forever!

【问题讨论】:

  • 这能回答你的问题吗? Line Break in HTML Select Option?
  • @HereticMonkey 可能,但那是 11 年零 3 份工作之前的事了,所以我不记得我为什么需要它!不过感谢您的链接!

标签: html css drop-down-menu


【解决方案1】:

你不能用标准的 <option> 做到这一点,你需要自己动手或找到一个菜单插件

【讨论】:

  • 我找到了这个:github.com/fnagel/jquery-ui/wiki/Selectmenu,它符合原始问题的要求。
  • 您答案中的链接已失效(R.I.P.)
  • 你好 Scott,链接失效(再次)。请将其重新指向适当的位置,或删除答案的那部分。最好的!阅读后标记为no longer needed
【解决方案2】:

这是一个快速而纯粹的 jQuery 解决方案,可能对某些人有所帮助。除了创建自己的下拉菜单并从 Scott Evernden 提到的隐藏选择中提取值/文本之外。这会给你一些玩耍的空间。它不会在单词中间被切断,但同时它不会换行。它会将全文放入标题中,以便用户可以翻转并看到包含的全文单词。然后它将使用 maxChar 设置转到一定数量的字符,然后查找它所在单词的结尾,以免切断单词。选项的最小宽度应使其与选择保持一致,但继续使用 maxChar 变量,它应防止其超出范围。这是一个简短的解决方法,因为在大多数情况下我会使用定制的解决方案,但是对于快速列表,用户可以知道他们用第一个或两个单词选择了什么,这很有效。希望这可以帮助某人:

var optionText, array = [], newString, maxChar = 40;
$('select').each(function(){
    $(this).find('option').each(function(i,e) {
        $(e).attr('title',$(e).text());
        optionText = $(e).text();
        newString = '';
        if (optionText.length > maxChar) {
            array = optionText.split(' ');
            $.each(array,function(ind,ele) { 
                newString += ele+' ';
                if (ind > 0 && newString.length > maxChar) {
                    $(e).text(newString);
                    return false;
                }
            });

        }
    });
});

【讨论】:

  • 对我有用,除了 option 元素上的 title 属性,Chrome 似乎不再识别它。
  • @Mike,如果是 Chrome,我们该怎么办?
  • @Steve 除了获得一个 jquery select 插件,它将完全重写 <select> 为完全不同的东西(如另一个答案中所建议的那样),我不认为这可以在这样的非- 作为这个答案的侵入性方式。
  • @Mike - 我不明白为什么上面的代码中提到了title 属性。代码可以改写去掉title吗?
  • @Steve 只需删除设置标题的单行。或者只是把它留在那里,对于支持它的浏览器,它会按预期工作。在 Chrome 上,唯一的区别是对于被截断的元素,您无法通过将鼠标悬停在它们上来获取全文。这个答案也很老了,所以可能其他浏览器现在的行为与 Chrome 相同。我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 2020-01-31
  • 2014-07-31
相关资源
最近更新 更多