JavaScript相关知识点
来源:互联网 发布:网络教育 考试难度 编辑:程序博客网 时间:2024/06/14 11:17
十条jQuery代码片段助力Web开发
- 检测IE浏览器
在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦。尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测。当然,以下片段亦可用于检测其它浏览器。
$(document).ready(function() { if (navigator.userAgent.match(/msie/i) ){ alert('I am an old fashioned Internet Explorer'); } });
- 平滑滚动至页面顶部
以下是jQuery最为常见的一种实现效果:点击一条链接以平滑滚动至页面顶部。虽然没什么新鲜感可言,但每位开发者几乎都用得上。
$("a[href='#top']").click(function() { $("html, body").animate({ scrollTop: 0 }, "slow"); return false; });
- 保持始终处于顶部
以下代码片段允许某一元素始终处于页面顶部。可以想见,其非常适合处理导航菜单、工具栏或者其它重要信息。
$(function(){ var $win = $(window) var $nav = $('.mytoolbar'); var navTop = $('.mytoolbar').length && $('.mytoolbar').offset().top; var isFixed=0; processScroll() $win.on('scroll', processScroll) function processScroll() { var i, scrollTop = $win.scrollTop() if (scrollTop >= navTop && !isFixed) { isFixed = 1 $nav.addClass('subnav-fixed') } else if (scrollTop <= navTop && isFixed) { isFixed = 0 $nav.removeClass('subnav-fixed') } }
- 替换html标签
jQuery能够非常轻松地实现html标签替换,而这也将为我们带来更多新的可能。
$('li').replaceWith(function(){ return $("<div />").append($(this).contents()); });
- 检测屏幕宽度
现在移动设备的人气几乎已经超过了传统计算机,因此对小型屏幕的尺寸进行检测就变得非常重要。幸运的是,我们可以利用jQuery轻松实现这项功能。
var responsive_viewport = $(window).width(); /* if is below 481px */if (responsive_viewport < 481) { alert('Viewport is smaller than 481px.'); } /* end smallest screen */
- 自动修复损坏图片
如果大家的站点非常庞大而且已经上线数年,那么其中或多或少会出现图片损坏的情况。这项功能可以检测损坏图片并根据我们的选择加以替换。
$('img').error(function(){ $(this).attr('src', 'img/broken.png'); });
- 检测复制、粘贴与剪切操作
利用jQuery,大家可以非常轻松地检测到选定元素的复制、粘贴与剪切操作。
$("#textA").bind('copy', function() { $('span').text('copy behaviour detected!') }); $("#textA").bind('paste', function() { $('span').text('paste behaviour detected!') }); $("#textA").bind('cut', function() { $('span').text('cut behaviour detected!') });
- 自动为外部链接添加target=“_blank”属性
在链接至外部站点时,大家可能希望使用target=”blank”属性以确保在新的选项卡中打开页面。问题在于,target=”blank”属性并未经过W3C认证。jQuery能够帮上大忙:以下片段能够检测当前链接是否指向外部,如果是则自动为其添加target=”blank”属性。
var root = location.protocol + '//' + location.host; $('a').not(':contains(root)').click(function(){ this.target = "_blank"; });
- 悬停时淡入/淡出
又是另一项“经典”效果,大家可以利用以下片段随时加以运用。
$(document).ready(function(){ $(".thumbs img").fadeTo("slow", 0.6); // This sets the opacity of the thumbs to fade down to 60% when the page loads $(".thumbs img").hover(function(){ $(this).fadeTo("slow", 1.0); // This should set the opacity to 100% on hover },function(){ $(this).fadeTo("slow", 0.6); // This should set the opacity back to 60% on mouseout }); });
- 禁用文本/密码输入中的空格
无论是电子邮件、用户名还是密码,很多常见字段都不需要使用空格。以下代码能够轻松禁用选定输入内容中的全部空格。
$('input.nospace').keydown(function(e) { if (e.keyCode == 32) { return false; } });
注意:Jquery中用offset().top和offsetTop的比较
offsetTop:当前对象到其上级层顶部的距离。不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性。
offset().top:指元素与document的上边的距离,而不是浏览器当前窗体的上边缘。
jquery的$.extend和$.fn.extend作用及区别
jQuery为开发插件提拱了两个方法,分别是:
jQuery.fn.extend();
jQuery.extend();
虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。
jQuery便是一个封装得非常好的类,比如我们用 语句 $(“#btn1”) 会生成一个 jQuery类的实例。
jQuery.extend(object);为jQuery类添加类方法,可以理解为添加静态方法。如:
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
jQuery.min(2,3); // 2
jQuery.max(4,5); // 5
jQuery.extend( target, object1, [objectN]) 用一个或多个其他对象来扩展一个对象,返回被扩展的对象。 var settings = { validate: false, limit: 5, name: “foo” }; var options = { validate: true, name: “bar” }; jQuery.extend(settings, options); 结果:settings == { validate: true, limit: 5, name: “bar” }
jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。
比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:
$.fn.extend({ alertWhileClick:function() { $(this).click(function(){ alert($(this).val()); }); } }); // 页面上为:$("#input1") 为一个jQuery实例,当它调用成员方法 //alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。 $("#input1").alertWhileClick();
那么你可以这样子:$(“#div”).abc(); 通常使用jQuery.extend()方法扩展.
$.fn是什么东西呢。查看jQuery代码,就不难发现。
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {//….
};
原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。
jquery源码分析:http://www.admin10000.com/document/7067.html,看过源码上面的内容就很好理解了。
javascript “||”、“&&”的灵活运用
你是否看到过这样的代码:a=a||”“; 可能javascript初学者会对此感到茫然。今天就跟大家分享一下我的一些心得。 其实:
a=a||”defaultValue”;
与:
if(!a){ a="defaultValue";}
和:
if(a==null||a==""||a==undefined){ a="defaultValue";}
是等价的! 为了弄清这个问题,首先我们必须了解一个问题:javascript中数据类型在转换为bool类型时发生了什么。
在javascript中,数据类型可以分为“真值”和“假值”。顾名思义,真值转换为bool时值为true;假值转换为bool时值为false。下表罗列了一些常见的数据类型转换为bool时的值:
在if表达式中,javascript首先将条件表达式转换为bool类型,表达式为真值则执行if中的逻辑,否则跳过。
于是有了:
if(!a){
a=”defaultValue”;
}
下面我们再来看“&&”、“||”两个表达式。
由于javascript是弱类型语言,所以在javascript中这两个表达式可能跟其他语言(比如java)中不太一样。
在javascript中,“&&”运算符运算法则如下:
如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。
这就是说:
var i=”“&&”真值”; //->i=””
i=”真值”&&”其他真值”; //->i=”其他真值”
i=”真值”&&”“; //->i=””
“||”运算符的运算法则如下:
如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。
这就是说:
var i=”“||”真值”;//->i=”真值”
i=”真值”||”其他真值”;//->i=”真值”
i=”真值”||”“;//->i=”真值”
于是,就可以理解:a=a||”defaultValue”;的逻辑了。如果a为假值(等于null、空字符串……),则将”defaultValue”赋给a;否则将a的值赋给a本身。
- JavaScript相关知识点
- JavaScript中的正则表达式相关知识点总结
- Javascript中函数相关知识点3(面试必备)
- 不用JQuery,原生Javascript实现Ajax功能及相关知识点
- javascript 知识点
- javascript知识点
- javascript知识点
- javascript知识点
- JavaScript知识点
- javascript知识点
- JavaScript知识点
- javaScript 知识点
- javascript知识点
- javascript知识点
- Javascript知识点
- JavaScript知识点
- javascript知识点
- JavaScript第六章知识点总结——JavaScript常用DHTML对象 Document相关对象 事件处理
- Android快速开发系列 10个常用工具类
- 【架构】为什么在服务层设计读写分离
- 实现PHP+Mysql无限分类的方法汇总
- LeetCode[Math]: Integer to Roman
- 简述Linux Epoll ET模式EPOLLOUT和EPOLLIN触发时刻
- JavaScript相关知识点
- 修改图片的MIME类型及使其名称排序的脚本
- Ubuntu下安装配置laravel
- Mysql ON DUPLICATE KEY UPDATE 用法
- 快速解决jquery之get缓存问题的最简单方法介绍
- 一篇在我开始jsp之路的时候看到的文章(1)
- 深入struts2(一)---工作机制和执行流程图
- android Service 的简单使用(学习别人)
- Myeclipse eclipse 离线安装插件