$('a').click()无法触发页面跳转

描述

在用$("a").click()方法, 触发a元素点击事件,进行页面跳转效果. 结果发现页面未发生跳转.

示例

<html>
<meta charset='utf-8'>
<body>
<button id="btn">按钮</button>
<a href="http://www.baidu.com" target="_blank" id="link">链接</a>
</body>
<script src="/jquery1.91.js" type="text/javascript"></script>
<script>
$(function(){
    $("#btn").click(function(e){
        //触发点击事件
        $("a").click();
    });
</script>
</html>

解决方法

  • 第一种: 用原生的a对象触发事件
$("a")[0].click();
  • 第二种: 通过事件冒泡触发事件
<a href="http://www.baidu.com" target="_blank" id="link"><span id="link">链接</span></a>

$(function(){
    $("#btn").click(function(e){
        //触发点击事件
        $("#link").click();
    });
</script>
 

javascript replace函数

定义
replace()函数用于替换字符串.
 
语法
stringObject.replace(regexp/substr, newSubStr/function)
参数
regexp/substr       正则表达式/字符串
newSubStr/function  替换文本/生成替换文本的函数
 
示例
var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "W3Schools");
 
替换字符
假如替换字符newSubStr中包含$符号,它表示什么?
$1、 $2、 ...、$99 与 regexp 中的第1到第99个子表达式相匹配的文本
$& 与 regexp 相匹配的子串
$` 位于匹配子串左侧的文本
$' 位于匹配子串右侧的文本
$$ 直接量符号。
 
上面$1、$2...中提到的子表达式是什么意思?正则表达式中用小括号包裹起来的表达式.
例如:
/a/   无子表达式
/[a]/ 无子表达式
/(a)/ 有子表达式(a)
/(a), (b)/ 有子表达式(a)、(b)
 
示例
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
//输出"John Doe"
 
替换函数
替换函数说明

function(match, p1, p2,..., offset, string)
match      匹配到的字符串
p1, p2...  匹配到的子表达式
offset     匹配到字符串的位置
string     整个字符串
 
示例
var name = "ace:mm-Abc".replace(/([\:\-\_]+(.))/, function(match, p1, p2, offset, total){
        console.log("match:" + _);
        console.log("p1:" + separator);
        console.log("p2:" + letter);
        console.log("offset:" + offset);
        console.log("total:"+ total)
        return offset ? p2.toUpperCase() : p2;
})
console.log(name)
/*输出
substr::m test.html:43
p1::m
p2:m
offset:3
total:ace:mm-Abc
aceMm-Abc 
*/
上面正则表达式中有两个子表达式
p1是子表达式([\:\-\_]+(.))匹配到的内容":m"
p2是子表单是(.)匹配到的内容"m"
 

web前端开发包管理器bower[笔记]

    Bower是用于web前端开发的包管理器。对于前端包管理方面的问题,它提供了一套通用、客观的解决方案。它通过一个API暴露包之间的依赖模型,这样更利于使用更合适的构建工具。Bower没有系统级的依赖,在不同app之间也不互相依赖,依赖树是扁平的。
    Bower运行在Git之上,它将所有包都视作一个黑盒子。任何类型的资源文件都可以打包为一个模块,并且可以使用任何规范(例如:AMD、CommonJS等)。
 

安装

#安装bower
npm install -g bower

基本用法

#安装包
bower install jqeury
#指定版本
bower install jquery#1.10.3
#查找包
bower search jquery
#卸载包
bower install jqeury

使用包

<script src="/bower_components/jquery/index.js"></script>

配置

配置文件.bowerrc
{
  "directory" : "components", #指定安装路径
  "json"      : "bower.json",
  "endpoint"  : "https://Bower.herokuapp.com",
  "searchpath"  : "",
  "shorthand_resolver" : ""
}

来源:http://bower.jsbin.cn/

jquery对象是否相同

通过不同形式得到同一个htnl元素,如何比较它是否相同?
假设得到后,两者变量名是A和B. (A和B是js元素,还是jquery对象,此时不清楚)
 
第一个想到的是方法是$(A) == $(B),结果返回false
再试试$(A)[0] == $(B)[0],结果返回true
 
它比较的是什么?
 
看看下面例子,下面的两个input比较,会相同吗.
<div id="content">
    <input name="user_name"/>
    <input name="user_name"/>
</div>
 
它们不同
$(function(){
    var inputs = $("#content input")
    console.info(inputs[0] == inputs[1]);  //false
    console.info($(inputs[0]) == $(inputs[0])); //false
});
 
其实比较只有两种类型: 值类型和引用类型.
上面就是引用比较. jquery的$会产生新对象,每次的引用都不同,自然就不相等.
所以只能用最初的引用进行比较,而不是jquery转化后的.