项目中常用jquery知识总结

1、$(function(){})是什么

-----------------(1)-----------------
$(function() {
      //...
});
 -----------------(2)-----------------
$(document).ready(function(){
     //...
});
 -----------------(3)-----------------
window.onload = function() {
     //...
}

说明:(1)就是(2)的简写形式,window.onload 只能出现一次,而(1)、(2)可以出现多个次,都是指当文档载入完毕后执行。如果该段js代码放到了dom文档的最后,可以不用写这几个方法。
注意$(document).ready(function(){...})里面还可以定义多个函数。但是,外面的语句无法调用里面的函数;


2、常用的选择器

选择器 举例 说明
#id $("#lastname") 选取id="lastname" 的元素
.class $(".intro") 选取class="intro" 的所有元素
element $("p") 选取所有<p> 元素
:first $("p:first") 选取第一个<p> 元素
:input $(":input") 选取所有 input 元素

实例
(1)获取value等于10的input元素:$("input[value=" + 10 + "]")
(2)获取id="hahaha"的直接父元素:$("#hahaha").parent


3、jQuery对象与DOM对象的相互转换

(1)jQuery通过选择器获取的对象并不是原生的DOM对象
jQuery对象是包装DOM对象后产生的,是一个数据对象;jQuery无法使用DOM对象的任何方法,DOM对象也不能使用jQuery的任何方法。$("#test").innerHTMLdocument.getElementById("id").html()之类的写法都是错误的。

(2)jQuery对象转成DOM对象:
$("#id") [0]:其中$("#id")是jQuery对象,$("#id") [0]是DOM对象,在后面加上[0]可以获取对应的DOM对象,或者使用$("#id").get(0)同样可以获取。
(3)DOM对象转成jQuery对象:
只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象,如:

var v = document.getElementById("id"); //DOM对象 
var v1 = $(v); //jQuery对象

4、jQuery设置元素的属性等

假如有元素:<div id="haha"><input id="haha1" value="zhangSan"></div>
(1)设置某元素的高度:$("#haha").height("200px");
(2)设置某元素的样式:$("#haha").css("display", "none");
(3)获取浏览器窗口的高度:$(window).height()
(4)获取input元素的值:$("#haha1").val()
(5)设置input元素的值:$("#haha1").val("liSi")
(6)设置src、href等属性:
$('#img-id').attr("src","http://你的图片地址");
$('#a-id').attr("href","http://你的链接地址");


5、常用处理方法

(1)屏蔽html标签$('<div/>').text("<h1>我是h1标签</h1>").html()
(2)显示文本内容:假如使用p标签<p id="text-viewer"></p>,然后设置为:$("#text-viewer").html("要显示的文本内容");
(3)text()html() 、与val()的区别

text() - 设置或返回所选元素的文本内容
html() - 设置或返回所选元素的内容(包括 HTML 标记)
val()- 设置或返回表单字段的值

(4)获取某元素的scrollHeight值(实际高度,即使有由于滚动而不接见的部分):
$("#id").prop('scrollHeight')
引自:Stack Overflow

---------------------------------
There is no scrollHeight in jQuery - it's scrollTop():

var elemHeight = $("#container").scrollTop();
var scrollHeight = $("#scrollbars").scrollTop();
Alternatively if you want to use the native scrollHeight property, 
you need to access the DOM element in the jQuery object directly, like this:

var elemHeight = $("#container")[0].scrollHeight;
var scrollHeight = $("#scrollbars")[0].scrollHeight;
------------------------------------
If you are using Jquery 1.6 or above, use prop to access the value.

$("#container").prop('scrollHeight')
Previous versions used to get the value from attr but not post 1.6.

6、jQuery常用事件

事件 说明 举例
click() 点击元素时 $("p").click(function(){ //...});
dblclick() 双击元素时 $("p").dblclick(function(){//...});
mouseenter() 鼠标指针穿过元素时 $("#p1").mouseenter(function(){//...});
hover() 光标悬停在元素时 $("#p1").hover(function(){//...});
mousedown() 鼠标指针移动到元素上方,并按下鼠标按键时 $("#p1").mousedown(function(){});
mouseup() 在元素上松开鼠标按钮时 $("#p1").mouseup(function(){//... });
focus() 元素获得焦点时 $("input").focus(function(){//...});
blur() 当元素失去焦点时 $("input").blur(function(){/...});

另外两个:
bind():向被选元素添加一个或多个事件处理程序,以及当事件发生时运行的函数。
unbind():从被选元素上移除添加的事件处理程序。

常用处理方法:
禁用右键

$("#container").bind("contextmenu",function(e){   
            return false;
});

禁止选择文字:这里,选择器可以是某个元素,但是如果写成某个元素,依然可以从其他元素元素文字,然后拉动鼠标,选中你禁止选择文字的元素,所以最好用document。

//适用IE和Chrome
$(document).bind("selectstart",function(){return false;});
//适用Firefox:注意这里不能写document,否则会无效
$(document.body).css("-moz-user-select", "none");

监听窗口大小改变

$(window).resize( function(){
    //调整视频view的容器的高度
    $("#vedio-viewer").height($("#vedio-viewer").width()*2/3);
 });

为input标签绑定enter事件

$("#input-id").keypress(function(e) {
        var key = window.event ? e.keyCode : e.which;
        if (key.toString() == "13") {//enter键
            //执行一些操作
              ...
              ...

             //防止事件继续传递
            return false;
        }
    });

点击某一元素外的区域的事件

$(document).not($("#nav-search-input")).click(function(){
    //点击除nav-search-input之外的其他区域触发的事件

});

//但是要加上这个,防止事件继续传递
$("#nav-search-input").click(function(event) {
    event.stopPropagation();
    //操作...
});

禁止输入特殊字符

$("#input-id").on('input',function(e){  
    var search = $("#input-id").val();
    $("#input-id").val(search.replace(/\#/g, ''));
});

7、jQuery循环遍历

$(".hahaha").each(function(){//对所有class中含有hahaha的元素进行循环操作
      //这里可以用this表示当前遍历的jQuery对象
});

8、其他

(1)判断字符串是否以特定字符串结尾

String.prototype.endWith=function(endStr){
      var d=this.length-endStr.length;
      return (d>=0&&this.lastIndexOf(endStr)==d)
}

function(name){
    name = name.toLowerCase();
    if(name.endWith(".docx") ){
       //...
         ...
    }
}

9、ajax

$.ajax({
    cache : false,//布尔值,表示浏览器是否缓存被请求页面。默认是 true。
    type : "POST",//规定请求的类型(GET 或 POST)。
    url:"请求的url路径",//规定发送请求的 URL。默认是当前页面。
    data :... ,//规定要发送到服务器的数据。
        
          //这里要说明的是,data有三种形式:
          文本形式   data : "uname=alice&mobileIpt=110",(也可以在url后面直接拼接)
          json对象   data : {uanme:'vic',mobileIpt:'110'},
          json数组   data : [
                           {"name":"uname","value":"alice"},
                           {"name":"mobileIpt","value":"110"},   
                           {"name":"birthday","value":"2012-11-11"}
                         ],
           //如果是表单数据,可以这样写:
           data : $('#表单的id').serialize(),

    async : false,//布尔值,表示请求是否异步处理。默认是 true。
    error : function(request) {//如果请求失败要运行的函数。
                 //...
                   ...
            },
    success : function(data) {//当请求成功时运行的函数。
                  //假如获取的数据类型是Map,如何取值?
                  //后台Map map = new HashMap(); map.put("name", "zhangsan");
                  可以这样来处理:data = eval("(" + data + ")");
                  那么data.name就是字符串"zhangsan"
                  //如何获取map的长度
                  var length  = Object.keys(data).length ;
                  ...
            }
});



10、jQuery对各种数据的处理

待续

11、关于浏览器

(1)获取浏览器的flash有没有安装以及版本

//使用示例
var flash = flashChecker();
if(!flash.f){
    //安装了flash插件
    console.log("flash的版本是:" + flash.v);
}else{
    //没安装flash插件
    $("#vedio-viewer").html("<p style='margin-top:20px;'>
      您的浏览器没有安装flash插件,需安装后才能播放视频:
      </p><a href='http://get.adobe.com/cn/flashplayer/'>点击安装</a>");

}

//函数定义
function flashChecker(){
        var hasFlash = 0; // 是否安装了flash
        var flashVersion = 0; // flash版本
        if (document.all) {
            var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
            if (swf) {
                    hasFlash = 1;
                    VSwf = swf.GetVariable("$version");
                    flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);
            }
        } else {
            if (navigator.plugins && navigator.plugins.length > 0) {
                var swf = navigator.plugins["Shockwave Flash"];
                if (swf) {
                    hasFlash = 1;
                    var words = swf.description.split(" ");
                    for (var i = 0; i < words.length; ++i) {
                        if (isNaN(parseInt(words[i]))) continue;
                        flashVersion = parseInt(words[i]);
                    }
                }
            }
        }
        return {f:hasFlash,v:flashVersion};
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,364评论 0 44
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,578评论 0 11
  • jQuery基础(一)——样式篇 1-2环境搭建 1-3 jQuery HelloWorld体验 $(docume...
    croyance0601阅读 1,079评论 0 8
  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    程序员poetry阅读 16,641评论 18 503
  • 第一章 入门 基本功能:访问和操作 dom 元素,控制页面样式,对页面的事件处理,与ajax完美结合,有丰富的插件...
    X_Arts阅读 1,037评论 0 2