Media Selector是一个很小的jQuery脚本,可以从库中选择单个或多个图像(或任何其他元素)。用户可以通过Shift+Ctrl键选择多个文件。
1.将图像和复选框图标(在本例中使用Font Awesome)一起插入到CSS类为“image checkbox”的标签中。不要忘记使用“su media ID”属性为每个图像分配一个唯一的ID。
- <label class="image-checkbox">
- <img su-media-id="jquery" src="1.jpg" />
- <i class="fa fa-check"></i>
- </label>
- <label class="image-checkbox">
- <img su-media-id="script" src="2.jpg" />
- <i class="fa fa-check"></i>
- </label>
- <label class="image-checkbox">
- <img su-media-id="net" src="3.jpg" />
- <i class="fa fa-check"></i>
- </label>
- ...
2.创建一个普通复选框,在单选和多选之间切换。
- <input type="checkbox" class="custom-control-input" id="allowmultiple">
- <label class="custom-control-label" for="allowmultiple" style="cursor: pointer;">
- Multiple Select
- </label>
3.创建一个结果容器,媒体选择器在其中显示一个包含您选择的图像ID的JSON字符串。
- <div id="selectedmediapreview"></div>
4.为图像复选框设置样式所需的CSS。
- .image-checkbox {
- cursor: pointer;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- border: 3px solid transparent;
- box-shadow: 0 0 4px #ccc;
- outline: 0;
- margin: 4px;
- border-radius: 12px;
- }
- .image-checkbox-checked {
- border-color: #2196f3;
- }
- img {
- border-radius: 8px;
- max-height: 160px !important;
- max-width: -webkit-fill-available;
- }
- .image-checkbox i {
- display: none;
- color: #2196f3;
- }
- .image-checkbox-checked {
- position: relative;
- }
- .image-checkbox-checked i {
- display: block;
- position: absolute;
- top: 10px;
- right: 10px;
- }
5.在文档末尾加载必要的jQuery库。
- <script src="/path/to/cdn/jquery.slim.min.js"></script>
6.用于激活图像选择器的主JavaScript(jQuery脚本)。
- jQuery(function ($) {
- var mediaArray = [];
- var selectedMediasId;
- var isMultipleAllowed = false;
- $('#allowmultiple').click(function () {
- isMultipleAllowed = $('#allowmultiple').is(':checked') ? true : false;
- $('.image-checkbox-checked').each(function () {
- $(this).removeClass('image-checkbox-checked');
- });
- mediaArray = [];
- $('#selectedmediapreview').html('');
- });
- $(".image-checkbox").on("click", function (e) {
- var selected = $(this).find('img').attr('su-media-id');
- //console.log(selected);
- if ($(this).hasClass('image-checkbox-checked')) {
- $(this).removeClass('image-checkbox-checked');
- // remove deselected item from array
- mediaArray = $.grep(mediaArray, function (value) {
- return value != selected;
- });
- }
- else {
- if (isMultipleAllowed == false) {
- $('.image-checkbox-checked').each(function () {
- $(this).removeClass('image-checkbox-checked');
- });
- mediaArray = [];
- mediaArray.push(selected);
- } else {
- if (mediaArray.indexOf(selected) === -1) {
- mediaArray.push(selected);
- }
- }
- $(this).addClass('image-checkbox-checked');
- }
- //console.log(selected);
- console.log(mediaArray);
- selectedMediasId = mediaArray.join(",");
- console.log(selectedMediasId);
- $('#selectedmediapreview').html('<div class="alert alert-success"><pre lang="js">' + JSON.stringify(mediaArray.join(", "), null, 4) + '</pre></div>');
- //console.log(isMultipleAllowed);
- e.preventDefault();
- });
- });