javascript - 在选项中添加图像

标签 javascript jquery html css

当我的列表打开并且我正在使用 awesomplete autocomplete plugin 时,我想在我的选项左侧添加一个图像我想添加一张图片来向您展示我想要做什么。

我尝试添加内联 css 但没有任何变化

enter image description here

$(document).ready(function() {
  $('.awesomplete').on('awesomplete-select', function() {
    var $this = $(this),
      $sibling = $this.next();
    if ($sibling.attr('id') == 'mylist') {
      setTimeout(function() {
        var val = $this.find('input').val();
        var dataLink = $sibling.find('option:contains("' + val + '")').data('link');
        //console.log(dataLink);
        location.href = dataLink;
      }, 500);
    }
  });
});
.awesomplete>ul {
  border-radius: .3em;
  margin: .2em 0 0;
  background: hsla(0, 0%, 100%, .9);
  background: linear-gradient(to bottom right, white, hsla(0, 0%, 100%, .8));
  border: 1px solid rgba(0, 0, 0, .3);
  box-shadow: .05em .2em .6em rgba(0, 0, 0, .2);
  text-shadow: none;
}

@supports (transform: scale(0)) {
  .awesomplete>ul {
    transition: .3s cubic-bezier(.4, .2, .5, 1.4);
    transform-origin: 1.43em -.43em;
  }
  .awesomplete>ul[hidden],
  .awesomplete>ul:empty {
    opacity: 0;
    transform: scale(0);
    display: block;
    transition-timing-function: ease;
  }
}


/* Pointer */

.awesomplete>ul:before {
  content: "";
  position: absolute;
  top: -.43em;
  left: 1em;
  width: 0;
  height: 0;
  padding: .4em;
  background: white;
  border: inherit;
  border-right: 0;
  border-bottom: 0;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.awesomplete>ul>li {
  position: relative;
  padding: .2em .5em;
  cursor: pointer;
}

.awesomplete>ul>li:hover {
  background: hsl(200, 40%, 80%);
  color: black;
}

.awesomplete>ul>li[aria-selected="true"] {
  background: hsl(205, 40%, 40%);
  color: white;
}

.awesomplete mark {
  background: hsl(65, 100%, 50%);
}

.awesomplete li:hover mark {
  background: hsl(68, 100%, 41%);
}

.awesomplete li[aria-selected="true"] mark {
  background: hsl(86, 100%, 21%);
  color: inherit;
}
<input class="awesomplete dropdown-input" list="mylist" id="my-input" />
<datalist id="mylist">
	<option data-link="http://www.google.com">Ada</option>
	<option data-link="http://www.yahoo.com">Java</option>
	<option data-link="http://www.bing.com">JavaScript</option>
	<option data-link="http://www.yandex.com">Brainfuck</option>
	<option data-link="http://www.php.net">LOLCODE</option>
	<option data-link="http://www.asp.net">Node.js</option>
	<option data-link="http://www.microsoft.net">Ruby on Rails</option>
</datalist>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>

最佳答案

您可以覆盖在标签之前放置图像的单个元素的创建,例如:

var awesomplete = new Awesomplete(input, {
   item: myItemFunc
});;

function myItemFunc(text, input){
    //return the html to render an item
}

完整示例请参见以下内容:

var imgList = new Object();
imgList["Ada"] = "http://www.maglioccola.com/images/add-1.png";
imgList["Java"] = "http://www.maglioccola.com/images/add-2.png";
imgList["JavaScript"] = "http://www.maglioccola.com/images/add-3.png";
imgList["Brainfuck"] = "http://www.maglioccola.com/images/add-4.png";
imgList["LOLCODE"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Node.js"] = "http://www.maglioccola.com/images/add-4.png";
imgList["Ruby on Rails"] = "http://www.maglioccola.com/images/add-4.png";

$(document).ready(function() {
  var input = document.getElementById("my-input");
  var awesomplete = new Awesomplete(input, {
    item: myItemFunc
  });;
});

function myItemFunc(text, input){
  return Awesomplete.$.create("li", {
    innerHTML: createItem(text,input),
    "aria-selected": "false"
  });
}

function createItem(text, input){
  var img = document.createElement("img");
  img.style.height = '16px';
  img.src = imgList[text.label];
  var html = img.outerHTML + " " + text.label;
  return html;
}
.awesomplete>ul {
  border-radius: .3em;
  margin: .2em 0 0;
  background: hsla(0, 0%, 100%, .9);
  background: linear-gradient(to bottom right, white, hsla(0, 0%, 100%, .8));
  border: 1px solid rgba(0, 0, 0, .3);
  box-shadow: .05em .2em .6em rgba(0, 0, 0, .2);
  text-shadow: none;
  list-style: none;
}

@supports (transform: scale(0)) {
  .awesomplete>ul {
    transition: .3s cubic-bezier(.4, .2, .5, 1.4);
    transform-origin: 1.43em -.43em;
  }
  .awesomplete>ul[hidden],
  .awesomplete>ul:empty {
    opacity: 0;
    transform: scale(0);
    display: block;
    transition-timing-function: ease;
  }
}


/* Pointer */

.awesomplete>ul:before {
  content: "";
  position: absolute;
  top: -.43em;
  left: 1em;
  width: 0;
  height: 0;
  padding: .4em;
  background: white;
  border: inherit;
  border-right: 0;
  border-bottom: 0;
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.awesomplete>ul>li {
  position: relative;
  padding: .2em .5em;
  cursor: pointer;
}

.awesomplete>ul>li:hover {
  background: hsl(200, 40%, 80%);
  color: black;
}

.awesomplete>ul>li[aria-selected="true"] {
  background: hsl(205, 40%, 40%);
  color: white;
}

.awesomplete mark {
  background: hsl(65, 100%, 50%);
}

.awesomplete li:hover mark {
  background: hsl(68, 100%, 41%);
}

.awesomplete li[aria-selected="true"] mark {
  background: hsl(86, 100%, 21%);
  color: inherit;
}
<input list="mylist" id="my-input" />
<datalist id="mylist">
	<option data-link="http://www.google.com">Ada</option>
	<option data-link="http://www.yahoo.com">Java</option>
	<option data-link="http://www.bing.com">JavaScript</option>
	<option data-link="http://www.yandex.com">Brainfuck</option>
	<option data-link="http://www.php.net">LOLCODE</option>
	<option data-link="http://www.asp.net">Node.js</option>
	<option data-link="http://www.microsoft.net">Ruby on Rails</option>
</datalist>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/awesomplete/1.1.1/awesomplete.min.js"></script>

希望对你有帮助,再见。

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

相关文章:

javascript - 我无法复制数组

javascript - 刷新时记住播放列表

html - CSS 过渡不更新悬停状态

javascript - 将现有站点的特定部分嵌入另一个站点

html - KineticJS Image Sprite 作为 Canvas 中的工具栏按钮图像

javascript - 使用 CSS 包含 Javascript

javascript - js测量可见高度与div总高度的差值

JavaScript:计算文本中字符的最小长度,忽略内部的特殊代码

javascript - 为什么这个选择器不起作用(Jquery 和 Asp.net)

javascript - 如何在php脚本中实现确认警报?