抉择所有子元素(排除最初一个)
element:not(:last-child) {}
自定义原生input="file"的款式
// 自定义上传款式<li id="upload-btn" class="default-image"> <img src="=" alt=""> <div>请上传图片</div> <!-- 上传(暗藏原生的input) --> <input type="file" id="upload" class="hide"></li>// 模仿原生input点击事件 $('#upload-btn').click(function() { $('#upload').click();})
attr()和prop()的区别
- attr示意HTML文档节点的属性,prop示意JS对象的属性
<!-- 这里的id、class、data-id均为div的attr --><div id="demo" class="demo" data-id="1"></div>
// 这里的name、age均为obj对象的proplet obj = { name: 'wen', age: 18}
- attr()底层依赖的是getAttribute()和setAttribute()两个办法,prop()依赖原生JS中的对象属性获取和设置形式。
- attr()是jQuery 1.0版本就有的函数,prop()是jQuery 1.6版本新增的函数
- 对于表单元素的checked、selected、disabled等属性,在jQuery 1.6之前,attr()获取这些属性的返回值为Boolean类型:如果被选中(或禁用)就返回true,否则返回false。
- 但从1.6开始,应用attr()获取这些属性的返回值为String类型,如果被选中(或禁用)就返回checked、selected或disabled,否则(即元素节点没有该属性)返回undefined。
- 在某些版本中,这些属性值示意文档加载时的初始状态值,即便之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会产生扭转。因为jQuery认为:attribute的checked、selected、disabled就是示意该属性初始状态的值,property的checked、selected、disabled才示意该属性实时状态的值(值为true或false)。
- 因而,在jQuery 1.6及当前版本中,请应用prop()函数来设置或获取checked、selected、disabled等属性。对于其它可能用prop()实现的操作,也尽量应用prop()函数。
原生ajax导出二进制文件(文件流)
var url = `/export?start_time=${start_time}`;var xhr = new XMLHttpRequest();// 也能够应用POST形式,依据接口xhr.open("GET", url, true);// 返回类型blob,XMLHttpRequest反对二进制流类型xhr.responseType = "blob";xhr.onload = function () { if (this.status === 200) { //应用response作为返回,而非responseText var blob = this.response; var reader = new FileReader(); // 转换为base64,能够间接放入a标签href reader.readAsDataURL(blob); reader.onload = function (e) { // 转换实现,创立一个a标签用于下载 var a = document.createElement("a"); // 获取以后导出工夫 var nowDate = format(new Date()); a.download = `文件名_${nowDate}.xlsx`; a.href = e.target.result; a.click(); }; }};xhr.send();
jquery实现近程搜寻(模拟iview)
// -----------近程搜寻 start------------ // 近程搜寻接口门路 var searchUrls = ["/productManager/index"]; // 申请下拉列表 function remoteSearch(val, idx) { var that = $("#" + val + ""); $("#" + val + "-dropdown").show(); $("#select-" + val + "-id").val(""); var name = $(that).val().trim(); var data = { name }; $("#" + val + "-dropdown").html( '<div class="search-loading">加载中...</div>' ); $.ajax({ type: "GET", url: searchUrls[idx], data, success: function (res) { var list = res.data || []; var str = ""; if (list.length) { $.each(list, function (index, item) { str += ` <li class="select-item" data-id=${item.id} data-name=${item.name}> ${item.name} </li>`; }); $("#" + val + "-dropdown").html(str); } else { $("#" + val + "-dropdown").html( '<div class="empty-search">无匹配数据</div>' ); } }, error: function (error) { console.log(error); }, }); } // 防抖函数 function debounce(fn, delay = 500) { var timer = null; return function () { var context = this; var args = arguments; timer && clearTimeout(timer); timer = setTimeout(() => { fn.apply(context, args); }, delay); }; } var debounceCategory = debounce(remoteSearch.bind(null, "category", 0), 500); // 绑定input事件 $("#category").on("input", debounceCategory); // 失焦暗藏下拉列表 function hideDropdown(str) { setTimeout(() => { var id = $("#select-" + str + "-id").val(); if (!id) $("#" + str + "").val(""); $("#" + str + "-dropdown").hide(); }, 200); } // 失焦 $("#category").blur(hideDropdown.bind(null, "category")); // 抉择下拉列表某一项 function selectItem(that, str) { var id = $(that).attr("data-id"); var name = $(that).attr("data-name"); $("#" + str + "").val(name); $("#select-" + str + "-id").val(id); $("#" + str + "-dropdown").hide(); } // 抉择 $("#category-dropdown").on("click", ".select-item", function () { selectItem($(this), "category"); });
JQuery切换弹窗状态
function toggleModal(str, bool) { var modal = modalInfo[str]; bool ? $(modal).stop().fadeIn(300) : $(modal).stop().fadeOut(300);}
JQuery导入文件
// 点击导入function selectFile() { $("#import-product-file").click();}// 导入文件$("#import-product-file").change(function () { var fileItem = $(this)[0].files[0]; var fileName = fileItem.name; $("#import-file-name").html(fileName);});// 确认导入function submitImport() { var fileItem = $("#import-product-file")[0].files[0]; if (!fileItem) return alert("请先抉择文件!"); var formData = new FormData(); formData.append("file", fileItem); $("#import-product-file").val(""); $.ajax({ type: "POST", url: "/import", data: formData, contentType: false, processData: false, dataType: "json", success: function (res) { if (res.code === 0 && res.status) { alert("导入胜利!"); getList(); } else { alert(res.msg || "导入失败!"); } }, error: function (error) { console.log(error); }, });}
JQuery实现监听input字数
// 监听键盘输入事件(实时字数)$("#category-desc").on("input", function () { var currentCount = $(this).val().length; $("#category-current-count").html(currentCount);});