gpt4 book ai didi

javascript - Sumoselect 中的选项可以添加图标/图像吗?

转载 作者:行者123 更新时间:2023-12-03 00:20:36 25 4
gpt4 key购买 nike

我使用 jquery 插件 sumoselect 构建了一个相当复杂的表单来选择选项元素。我现在需要为每个选项添加一个图标/图像。图像 src 将是我网站上的 jpg 文件。

有机会通过 sumoselect 实现这一目标吗?

谢谢

编辑我补充说图像是可变的并且取决于“选项”值。

感谢 gaetanoM,我详细阐述了他的代码片段并得出:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/HemantNegi/jquery.sumoselect@master/sumoselect.css">
<script src="https://cdn.jsdelivr.net/gh/HemantNegi/jquery.sumoselect@master/jquery.sumoselect.min.js"></script>

<select name="somename" class="testselect1">
<option value="1000">Volvo</option>
<option value="1001">Saab</option>
<option value="1002">Mercedes</option>
<option value="1003">Audi</option>
</select>

jquery:

$('.testselect1').SumoSelect();
$('.testselect1').on('sumo:opening', function(e) {
//console.log(e);
$(this).closest('.SumoSelect').find('.optWrapper li').each(function(idx, ele) {
console.log("idx",idx,"ele",ele);
//$(this).find('i').remove();
$(this).prepend('<img style="height:10px" '+
'src="https://www.freeiconspng.com/uploads/heart-png-15.png">');
$(this).prepend($('.testselect1 option').eq(idx).val());
$(this).find('label').css('display', 'inline');
})

})

为了示例,我使用了修复图像和添加的文本。

看起来不错!

谢谢

编辑2

对 gaetanoM 代码的一个小改进是添加 .opt :这将避免将图像添加到 optgroup 的 header (如果存在):

$(this).closest('.SumoSelect').find('.optWrapper li.opt').each(function(idx, ele) {

另一个问题是图像在第一次加载时不显示,仅在打开和更改时显示...

我最终得到了一个丑陋解决方案,其中包括直接将图像添加到<option></option>内部.

为了避免在移动设备上使用 native 选择显示 html,我有一个“checkmobile”功能,该功能仅将图像放在计算机浏览器上。

除了丑陋之外,此解决方案不允许查看使用 native 移动选择选择的图像,并且在 PC 上,当悬停“提示”时,它会显示 html....

有什么简单的方法可以在不检查任何重新加载点的情况下显示图像?

再次感谢

最佳答案

您可以使用 sumo:opening 事件添加图标。使用此事件,您可以向每个列表项添加图标并调整标签样式:

$('.testselect1').on('sumo:opening', function(e) {
$(this).closest('.SumoSelect').find('.optWrapper li').each(function(idx, ele) {
$(this).find('i').remove();
$(this).prepend('<i class="fas fa-band-aid"></i>');
$(this).find('label').css('display', 'inline');
})
})

$('.testselect1').SumoSelect();
$('.testselect1').on('sumo:opening', function(e) {
$(this).closest('.SumoSelect').find('.optWrapper li').each(function(idx, ele) {
$(this).find('i').remove();
$(this).prepend('<i class="fas fa-angle-right"></i>');
$(this).find('label').css('display', 'inline');
})
});

$('.testselect1').on('change', function(e){
var selectBox = $(this).closest('.SumoSelect').find('.CaptionCont.SelectBox');
selectBox.find('>i').remove();
selectBox.find('span').css('display', 'inline').before('<i class="fas fa-angle-right"></i>');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/HemantNegi/jquery.sumoselect@master/sumoselect.css">
<script src="https://cdn.jsdelivr.net/gh/HemantNegi/jquery.sumoselect@master/jquery.sumoselect.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css">

<select name="somename" class="testselect1">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>

关于javascript - Sumoselect 中的选项可以添加图标/图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54329627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com