首页技术jquery模拟点击事件,js模拟鼠标点击事件

jquery模拟点击事件,js模拟鼠标点击事件

编程之家2026-05-19743次浏览

大家好,今天来为大家分享jquery模拟点击事件的一些知识点,和js模拟鼠标点击事件的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

jquery模拟点击事件,js模拟鼠标点击事件

jquery自定义事件有什么用

类似 DOM的行为:你在 DOM节点(包括 document对象)监听并触发自定义事件。这些事件既可以冒泡,也可以被拦截。这正是 Prototype、jQuery和 MooTools所做的。如果事件不能扩散,就必须在触发事件的对象上进行监听。

命名空间:一些框架需要你为事件指定命名空间,通常使用一个点号前缀来把你的事件和原生事件区分开。

自定义额外数据:JavaScript框架允许你在触发自定义事件时,向事件处理器传送额外的数据。jQuery可以向事件处理器传递任意数量的额外参数。

通用事件 API:只用 Dojo保留了操作原生 DOM事件的正常API。而操作自定义事件需要特殊的发布/订阅 API。这也意味着 Dojo中的自定义事件不具有DOM事件的一些行为(比如冒泡)。

声明:我们往往需要在预定义的事件中加入一些特殊的变化(例如,需要Alt键按下才能触发的单击事件),MooTools运行你定义此类自定义事件。此类事件需要预先声明,即便你只是声明他们的名字。任何未声明的自定义事件不会被触发。

理论太抽象,看看 jQuery框架中如何使用事件。

jquery模拟点击事件,js模拟鼠标点击事件

jQuery的事件自定义事件还是通过 on绑定的,然后再通过 trigger来触发这个事件。

//给element绑定hello事件

element.bind("hello",function(){

alert("hello world!");

});

//触发hello事件

jquery模拟点击事件,js模拟鼠标点击事件

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模拟鼠标点击事件的答案你都知道了吗?欢迎再次光临本站哦!

编程是学什么东西,儿童编程学什么内容java找不到文件(java在哪个文件夹)