jquery模拟点击事件,js模拟鼠标点击事件
大家好,今天来为大家分享jquery模拟点击事件的一些知识点,和js模拟鼠标点击事件的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
jquery自定义事件有什么用
类似 DOM的行为:你在 DOM节点(包括 document对象)监听并触发自定义事件。这些事件既可以冒泡,也可以被拦截。这正是 Prototype、jQuery和 MooTools所做的。如果事件不能扩散,就必须在触发事件的对象上进行监听。
命名空间:一些框架需要你为事件指定命名空间,通常使用一个点号前缀来把你的事件和原生事件区分开。
自定义额外数据:JavaScript框架允许你在触发自定义事件时,向事件处理器传送额外的数据。jQuery可以向事件处理器传递任意数量的额外参数。
通用事件 API:只用 Dojo保留了操作原生 DOM事件的正常API。而操作自定义事件需要特殊的发布/订阅 API。这也意味着 Dojo中的自定义事件不具有DOM事件的一些行为(比如冒泡)。
声明:我们往往需要在预定义的事件中加入一些特殊的变化(例如,需要Alt键按下才能触发的单击事件),MooTools运行你定义此类自定义事件。此类事件需要预先声明,即便你只是声明他们的名字。任何未声明的自定义事件不会被触发。
理论太抽象,看看 jQuery框架中如何使用事件。
jQuery的事件自定义事件还是通过 on绑定的,然后再通过 trigger来触发这个事件。
//给element绑定hello事件
element.bind("hello",function(){
alert("hello world!");
});
//触发hello事件
element.trigger("hello");
这段代码这样写似乎感觉不出它的好处,看了下面的例子也许你会明白使用自定义事件的好处了,参考右边的代码。
trigger需要处理的问题
模拟事件对象,用户模拟处理停止事件冒泡(因为不是通过浏览器系统触发的,而是自动触发的,所以这个事件对象要如何处理?)
区分事件类型,触发标准的浏览器事件和自定义事件名绑定的处理程序。
拟冒泡机制
当事件是 click类型,自然是本身支持冒泡这样的行为,通过 stopPropagation阻止即可
当然一些事件,如 focusin和 blur本身不冒泡,但 jQuery为了跨浏览器一致性, jQuery需要在这些事件上模拟了冒泡行为,jQuery要如何处理?
那么如果是自定义的aaa的事件名,又如何处理冒泡?
<ul id="tabs">
<li data-tab="users">Users</li>
<li data-tab="groups">Groups</li>
</ul>
<div id="tabsContent">
<div data-tab="users">part1</div>
<div data-tab="groups">part2</div>
</div>
<script type="text/javascript">
$.fn.tabs= function(control){
var element=$(this);
var control=$(control);
element.delegate("li","click", function(){
var tabName=$(this).attr("data-tab");
//点击li的时候触发change.tabs自定义事件
element.trigger("change.tabs", tabName);
});
//给element绑定一个change.tabs自定义事件
element.bind("change.tabs", function(e, tabName){
element.find("li").removeClass("active");
element.find(">[data-tab='"+ tabName+"']").addClass("active");
});
element.bind("change.tabs", function(e, tabName){
control.find(">[data-tab]").removeClass("active");
control.find(">[data-tab='"+ tabName+"']").addClass("active");
});
//激活第一个选项卡
var firstName= element.find("li:first").attr("data-tab");
element.trigger("change.tabs", firstName);
return this;
};
$("ul#tabs").tabs("#tabsContent");
</script>
用jquery实现图片轮播怎么写呢求指教
*{
margin:0;
padding:0;
}
ul{
list-style:none;
}
.slideShow{
width:620px;
height:700px;/*其实就是图片的高度*/
border:1px#eeeeeesolid;
margin:100pxauto;
position:relative;
overflow:hidden;/*此处需要将溢出框架的图片部分隐藏*/
}
.slideShowul{
width:2500px;
position:relative;/*此处需注意relative:对象不可层叠,但将依据left,right,top,bottom等属性在正常文档流中偏移位置,如果没有这个属性,图片将不可左右移动*/
}
.slideShowulli{
float:left;/*让四张图片左浮动,形成并排的横着布局,方便点击按钮时的左移动*/
width:620px;
}
.slideShow.showNav{/*用绝对定位给数字按钮进行布局*/
position:absolute;
right:10px;
bottom:5px;
text-align:center;
font-size:12px;
line-height:20px;
}
.slideShow.showNavspan{
cursor:pointer;
display:block;
float:left;
width:20px;
height:20px;
background:#ff5a28;
margin-left:2px;
color:#fff;
}
.slideShow.showNav.active{
background:#b63e1a;
}
js代码规范:
<scriptsrc="../../../jQuery/js/jquery-2.1.4.js"></script><scripttype="text/javascript">
$(document).ready(function(){
varslideShow=$(".slideShow"),//获取最外层框架的名称
ul=slideShow.find("ul"),
showNumber=slideShow.find(".showNavspan"),//获取按钮
oneWidth=slideShow.find("ulli").eq(0).width();//获取每个图片的宽度
vartimer=null;//定时器返回值,主要用于关闭定时器
variNow=0;//iNow为正在展示的图片索引值,当用户打开网页时首先显示第一张图,即索引值为0
showNumber.on("click",function(){//为每个按钮绑定一个点击事件
$(this).addClass("active").siblings().removeClass("active");//按钮点击时为这个按钮添加高亮状态,并且将其他按钮高亮状态去掉
varindex=$(this).index();//获取哪个按钮被点击,也就是找到被点击按钮的索引值
iNow=index;
ul.animate({"left":-oneWidth*iNow,//注意此处用到left属性,所以ul的样式里面需要设置position:relative;让ul左移N个图片大小的宽度,N根据被点击的按钮索引值iNOWx确定
})
});
functionautoplay(){
timer=setInterval(function(){//打开定时器
iNow++;//让图片的索引值次序加1,这样就可以实现顺序轮播图片
if(iNow>showNumber.length-1){//当到达最后一张图的时候,让iNow赋值为第一张图的索引值,轮播效果跳转到第一张图重新开始
iNow=0;}
showNumber.eq(iNow).trigger("click");//模拟触发数字按钮的click
},2000);//2000为轮播的时间
}
autoplay();
slideShow.hover(function(){clearInterval(timer);},autoplay);另外注意setInterval的用法比较关键。
})
</script>
主体代码:
[html]viewplaincopyprint?
<body>
<divclass="slideShow">
<!--图片布局开始-->
<ul>
<li><arel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" href="#"><imgsrc="images/view/111.jpg"/></a></li>
<li><arel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" href="#"><imgsrc="images/view/112.jpg"/></a></li>
<li><arel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" href="#"><imgsrc="images/view/113.jpg"/></a></li>
<li><arel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" href="#"><imgsrc="images/view/114.jpg"/></a></li>
</ul>
<!--图片布局结束-->
<!--按钮布局开始-->
<divclass="showNav">
<spanclass="active">1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
<!--按钮布局结束-->
</div>
</body>
jquery无法为动态生成的元素添加点击事件
如果你的元素是用click事件append进来的,那你的功能函数必须放在这个click事件里面。
比如:
$(".clickMeToAppendElement").click(function(){
$(".toBeAppend").append("<li><span><i class=\"icon J_classtree\">这是元素内容</i>");
$(".J_classtree").on("click",function(){
alert("终于进来了");
});
);
如果你把函数放在click事件外面,最初加载页面的时候,$(".J_classtree")就找不到.J_classtree这个类,那段功能函数就添加不了了。
扩展资料:关于上述click事件
click事件的写法:
方法一:
<!DOCTYPE html>
<html>
<head>
<title>Javascript中点击事件方法一</title>
</head>
<body>
<button id="btn">click</button>
<script type="text/javascript">
var btn= document.getElementById("btn");
btn.onclick=function(){
alert("hello world");
}
</script>
</body>
</html>
方法二:
<!DOCTYPE html>
<html>
<head>
<title>Javascript中点击事件方法二</title>
</head>
<body>
<button id="btn">click</button>
<script type="text/javascript">
var btn= document.getElementById("btn");
btn.addEventListener('click',function(){
alert("hello wrold");
},false)
</script>
</body>
</html>
文章分享结束,jquery模拟点击事件和js模拟鼠标点击事件的答案你都知道了吗?欢迎再次光临本站哦!