html js点击空白处关闭自定义弹出层
通常制作类似自定义下拉框,展开的div需要再点击任意空白区域后进行关闭 $(document).on('click',function(e){ var _con = $('.ztree,.js_ztree'); // 设置目标区域(排查点击不需要关闭的元素) if(!_con.is(e.target)&&_con.has(e.target).length === 0){ $('.ztree').hide() } })
…
记录-交流-Web开发知识分享
通常制作类似自定义下拉框,展开的div需要再点击任意空白区域后进行关闭 $(document).on('click',function(e){ var _con = $('.ztree,.js_ztree'); // 设置目标区域(排查点击不需要关闭的元素) if(!_con.is(e.target)&&_con.has(e.target).length === 0){ $('.ztree').hide() } })
…
document.getElementsByClassName()与document.getElementById(),大家应该对这两个方法都非常的不能再熟悉的js方法了,就是获取DOM元素嘛,有什么难的。今天我在这两个简单的方法上面犯了错误。
我页面中有一个按钮button,把按钮的结构代码直接贴上来吧,说的不直观,直接看代码最好了。
<button type="button" class="btn" id="btn-commit">提交</button>
我要的效果是获取到这个按钮后然后给按钮绑定一个点击事件,看到这个要求,多简单啊,我就直接写代码了:
document.getElementsByClassName("btn").onclick = function(){
console.log(333);
};
代码写完后,发现并不生效。我反复检查代码,代码没有写错,语法也没有问题。最后我就开始检查事件绑定的方法,也是没有问题。也检查不出问题,这个问题已经彻底把我给打懵了。
重新写段代码,然后通过ID获取元素并绑定事件,结果一次成功。
<button id="btn-focus" class="btn">聚焦</button>
var btnFocus = document.getElementById("btn-focus");
btnFocus.onclick = function(){
console.log(12);
};
我把获取元素的方式由id更改为class,效果就又不行了,这下我大概找到了问题的原因了,分别打印了下:
document.getElementsByClassName("btn")和document.getElementById("btn-commit");
console.log(document.getElementsByClassName("btn"));
console.log(document.getElementById("btn-commit"));
执行结果,贴个图片吧:
从这里看到了,通过getElementsByClassName()获取到的元素是一个元素的集合,通过getElementById()获取到的元素就是一个元素,难怪我通过getElementsByClassName()绑定事件没有响应呢,这就是原因。
本来挺简单的2个方法,由于疏忽,也不能说是疏忽大意,而是原来就没有注意到这个细节吧,之前对于DOM的操作都严重的依赖于jQuery,导致一些基本功给落下了,今天酿成了苦果。还好的是发现了这个问题,这个小小的教训,希望能给自己长个记性吧。再就是不能脱离基本功去严重的依赖工具库。
不生效的写法:
//这种写法不生效。
$dom.find("p.text-p").css("-webkit-line-clamp",3) ;
//或
$dom.find("p.text-p").css({"-webkit-line-clamp":3}) ;
生效了的写法:
//此处这个3,可以是个变量。
$dom.find("p.text-p").attr("style", "-webkit-line-clamp:" + 3);
猜测是直接改写dom结构,相当于写成了inline样式。即
<p style="xxxxxx">yyyy</p>
这样的形式。
js中进行字符串替换的方法:1、使用正则表达法,语法为【str.replace("需要替换的字符串","新字符串") 】;2、使用常规的替换方法,语法为【str.replace(/需要替换的字符串/g,"新字符串")】。
相关图文推荐:js教程
js中进行字符串替换的方法:
两种方法:正则&常规
str.replace("需要替换的字符串","新字符串")
str.replace(/需要替换的字符串/g,"新字符串")
比如:
1、
"yyyy-MM-dd-hh-mm-ss".replace("-","/")
结果如下:
"yyyy/MM-dd-hh-mm-ss"
2、
"yyyy-MM-dd-hh-mm-ss".replace(/-/g,"/")
结果如下:
"yyyy/MM/dd/hh/mm/ss"
综上:
常规的替换只会替换第一次匹配的字符,正则可替换全部
…
- Fetch API 提供了一个获取资源的接口(包括跨域请求),用于取代传统的XMLHttpRequest的,在 JavaScript 脚本里面发出 HTTP 请求。
- 目前还没有被所有浏览器支持,如果考虑低版本浏览器的问题的话,引入https://github.com/github/fetch/blob/master/fetch.js 即可兼容。
- fetch api是基于promise的设计,返回的是Promise对象,它是为了取代传统xhr的不合理的写法而生的。
//发送一个get请求是这样的:
//首先实例化一个XMLHttpRequest对象
var httpRequest = new XMLHttpRequest(
最近前端在做一个功能,
功能的内容是点击A按钮,生成内容1,在内容1中点击B按钮,生成内容2,在内容2中点击C按钮,返回最初界面样式。
整个jquery的代码,全部使用了 .click(function(){} 层层嵌套的结构。在这种click()点击事件支撑下的动态内容生成,依然没有问题。
但是“ .click(function(){} 层层嵌套的结构”会出现一个问题,就是最后一步,返回最初界面后,再去点击A按钮,就不起作用了。…
js中 urlencode编码 encodeURIComponent(编码的具体内容)
解码 decodeURIComponent(解码码的具体内容)
原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码
…
近期评论