jquery选择不存在的元素如何做到不报错的?
刚好这个月在看jquery源码,要回答这个问题,当然要从jquery源码来看了;
在这儿,使用的是jquery 2.0.3的版本源码进行说明;如,我们使用jquery去查找一个页面不存在的元素$('#test')元素,看下源码具体走了哪些;在这儿就不一步一步进行源码分析,只是进行简单说明;
通过下图代码可以看出,调用$('#test')时,会走jquery.fn.init函数;然后我们去看下此函数;
由于函数代码量过多,就不截图;简单说下,此函数会对传入的“selector”进行分类及各种情况处理;而这儿我们就看是id为test情况;首先它会通过下图判断
然后,会通过一个正则“match = rquickExpr.exec( selector );”进行匹配,匹配"#test"结果match如下:
然后会走原生方法document.getElementById方法:
因为页面本来没有此元素,所以会直接返回空(null),最后会走下图代码,返回最终结果由上图代码可知,即使返回结果为空,它也会返回一个jquery对象,里面包含context、selector属性,还有继承的jquery全局方法,结果如下图:所以,如果你即使查找一个没有的元素,它也会返回一个jquery对象,你也可以直接使用对象中所有的jquery全局方法;
上面只是用id的简单的方式,如果是类、标签、css等其他复杂的进行查找时,jquery会根据类型和浏览器的版本不同,使用不同的方式进行查找,但最终返回结果都差不多,而且即使没有,都会返回一个jquery对象;
如何用视频做网页的背景?
1.如果用通用js,用层来实现,但写的代码多。
2.如果你是用jquery就简单多了,别人都写好了,你引用即可。
3.引用jquery,video.js,bigvideo.js
4.在网页中添加function
$(function() {
var myVideo = new $.BigVideo();
myVideo.init();
myVideo.show('你的视频网址');
});
5.不管什么做背景,都是很容易实现的。
php如何接收json数据?
根据个人理解PHP接收json数据有三种:获取json格式的请求参数;获取json文件中的数据;获取接口返回的寄送数据。下面将一一讲述:1、获取请求参数
$input = file_get_contents("php://input");
$input = json_decode($input,true);
var_dump($input);
2、获取文件中的json
$jsonStr = file_get_contents('src/xx.json');
$jsonObj = json_decode($jsonStr, true);
3、获取接口返回的json(以post请求为例)
function run_curl_json($url, $data, $timeout) {
$data = json_encode($data);
$ch = curl_init($url); //请求的URL地址
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data)));
$ret = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$jsonObj = json_decode($ret, true);
return ['data' => $jsonObj, 'code' => $httpCode];
}
以上三种方式中获取到的都是json字符串,然后通过json_decode将json字符串转为数组。