-
-
-
vue @click.native和@click.stop和@click.self
2019-05-10 17:02:11参考一: vue @click.native 原生点击事件: 1,给vue组件绑定事件时候,... 子组件内部处理click事件然后向外发送click事件:$emit("click".fn) 参考二: 在事件处理器中经常需要调用event.preventDefault()...参考一:
vue @click.native 原生点击事件:
1,给vue组件绑定事件时候,必须加上native ,不然不会生效(监听根元素的原生事件,使用
.native
修饰符)2,等同于在自组件中:
子组件内部处理click事件然后向外发送click事件:
$emit("click".fn)
参考二:
在事件处理器中经常需要调用 event.preventDefault() 或 event.stopPropagation()。尽管我们在方法内可以轻松做到,不过让方法是纯粹的数据逻辑而不处理 DOM 事件细节会更好。
为了解决这个问题,Vue.js 为 v-on 提供两个 事件修饰符:.prevent 与 .stop。你是否还记得修饰符是点号打头的指令后缀?
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form><!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"><!-- 只有修饰符 -->
<form v-on:submit.prevent></form>参考三:
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,
用
v-on:click.prevent.self
会阻止所有的点击,而
v-on:click.self.prevent
只会阻止对元素自身的点击<!-- 点击事件将只会触发一次 --> <a v-on:click.once="doThis"></a>
不像其它只能对原生的 DOM 事件起作用的修饰符,
.once
修饰符还能被用到自定义的组件事件上。如果你还没有阅读关于组件的文档,现在大可不必担心。Vue 还对应
addEventListener
中的passive
选项提供了.passive
修饰符。<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 --> <!-- 而不会等待 `onScroll` 完成 --> <!-- 这其中包含 `event.preventDefault()` 的情况 --> <div v-on:scroll.passive="onScroll">...</div>
这个
.passive
修饰符尤其能够提升移动端的性能。不要把
.passive
和.prevent
一起使用,因为.prevent
将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive
会告诉浏览器你不想阻止事件的默认行为。参考四:
关于路由的跳转,如果我们直接页面使用a标签,当然无可厚非;
但是既然是vue单页面,那么我们就应该能使用vue自带的组件,那就尽量去熟练它们。
页面交互
<router-link to="/" @click.native.prevent="clickTag"> test has native router-link </router-link> //在上面那种情况下,路由会跳转到首页,并且控制台也会打印出 <router-link to="/" @click="clickTag"> test no native router-link </router-link> //在上面那种情况下,路由只会跳转到首页,控制台毫无反应 //ps:@mouseover、@mouseout等等事件都如此 <script> export default { methods: { clickTag() { console.log('i am click in father.vue') } } } </script>
上面那种是vue自带的组件情况,如果是自定义组件的话,native修饰符在我眼里,起到了节约代码的作用。
父组件
<svg-icon icon-class="user" @click="svgClickTag"></svg-icon> //js methods部分 svgClickTag() { console.log('svg-icon click in father.vue') }
子组件:要想实现父组件内的点击事件,子组件必须监听点击并触发父组件定义的click
<svg :class="svgClass" aria-hidden="true" @click="clickSvgComponent"> <use :xlink:href="iconName"></use> </svg> //js methods部分 clickSvgComponent() { this.$emit('click') }
如果有了native修饰符,那就没有子组件什么事情了
//子组件照常写,不作任何事件绑定,删掉methods <svg :class="svgClass" aria-hidden="true"> <use :xlink:href="iconName"></use> </svg> //父组件 <svg-icon icon-class="user" @click.native="svgClickTag"></svg-icon>
针对vue-element-ui中的el-button
<el-button type="primary" style="width: 100%;" :loading="loading" @click.native.prevent="handleLogin">Sign in</el-button> //个人认为这个库已经这某些地方把原生的click做了处理了,因为尝试过去掉native,照常成功
总结:native就是把组件变回原生DOM的一种方式,相当于给组件绑定原生事件。
-
MUI click事件无效 click没反应 click监听不到
2017-09-27 14:39:47mui click无效,click没反应html 部分代码:
<li id="aside_my" class="mui-table-view-cell"> <a class="mui-navigate-right">我的</a> </li>
javascript 部分代码:
//错误代码 $('#aside_my').on('click', function() { alert("我被点了"); });
click只针对button类控件好使,这是js的功能
而本例中 是 对 li 元素监听,所以 click失效,应该使用mui封装的 tap 来实现
所以javascript部分代码 ‘click’ 换成 ‘tap’就可以了,如下://正确代码 $('#aside_my').on('tap', function() { alert("我被点了"); });
-
Vue基础语法之@click、时间修饰符@click.stop与@click.prevent、按键修饰符(如@keyup.enter)
2018-11-27 23:15:071、绑定监听@click:(以监听click为例,其他如keyup,用法类似) v-on:click="fun" @click="fun" @click="fun(参数)" <button @click="test1">test...1、绑定监听@click:(以监听click为例,其他如keyup,用法类似)
v-on:click="fun"
@click="fun"
@click="fun(参数)"<button @click="test1">test1</button> <button @click="test2('abc')">test2</button> <button @click="test3('abcd', $event)">test3</button> methods: { test1(eve) {//test1函数没有参数,默认传递 $event alert(eve.target.innerHTML) //test1 }, test2 (msg) { //test1函数有参数,传递该参数 alert(msg) // abc }, test3 (msg, event) { //有参数,如果想获取到enevt,则函数中需要写 $event alert(msg+'---'+event.target.textContent) // abcd---test3 } }
2、@click.stop与@click.prevent
@click.stop 阻止事件冒泡
@click.prevent 阻止事件的默认行为,
<a href="http://www.baidu.com" @click.prevent="test4">百度一下</a> //阻止a标签跳转,仅执行函数test4
<form action="/xxx" @submit.prevent="test5"> //阻止表单提交,仅执行函数test5
<input type="submit" value="注册">
</form>3、按键修饰符
@keyup.enter
//按下enter时,执行方法test7
<input type="text" @keyup.enter="test7">
methods: {
test7 (event) {
console.log(event.keyCode)
alert(event.target.value)
}}
-
vue click.stop阻止点击事件继续传播
2017-11-14 18:36:18<div v-on:click="dodo"> <button v-on:click="doThis">阻止单击事件继续传播 </div> var app = new Vue({ el: "#app",<div id="app"> <div v-on:click="dodo"> <button v-on:click="doThis">阻止单击事件继续传播</button> </div> </div> <script> var app = new Vue({ el: "#app", data: { name: "Vue.js" }, methods: { doThis: function () { alert("noclick"); }, dodo: function () { alert("dodo"); } } }); </script>
将会先弹出“noclick”,再弹出“dodo”。
<div id="app"> <div v-on:click="dodo"> <button v-on:click.stop="doThis">阻止单击事件继续传播</button> </div> </div> <script> var app = new Vue({ el: "#app", data: { name: "Vue.js" }, methods: { doThis: function () { alert("noclick"); }, dodo: function () { alert("dodo"); } } }); </script>
只弹出“noclick”
-
@click和@click.native
2020-04-16 12:11:41如果是普通的html,使用@click就可以触发。 如果使用组件和路由,在router-link标签中就需要使用@click.native。不然就只会跳转而不会触发事件。 -
解决Invalid handler for event “click“:问题
2019-03-28 21:15:24解决Invalid handler for event "click":问题 上一篇文章介绍了如何搭建一个基于vue和ElementUi 的项目,当我在项目中添加 一个button按钮,并未这个按钮添加一个@click事件 <el-button type="primary" icon=... -
初学 Click 路由器
2019-06-19 15:03:03Click路由器的官方网址已经崩了 唯一途径就是github :https://github.com/kohler/click git clone下载源码 make make install后也不懂如何使用 看到文档中说 doc/click.5描述了怎么写配置文件 打开click.5... -
python click
2015-09-08 10:28:16What’s click ? http://click.pocoo.org/3/ Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It’s the “Command Line ... -
python click 函数
2019-06-04 15:54:04Click模块 click模块是Flask的作者开发的一个第三方模块,用于快速创建命令行。它的作用与Python标准库的argparse相同,但是,使用起来更简单。 click是一个第三方库,因此使用起来需要先行安装 安装click模块 ... -
Click Notes II - Click Script Language
2015-01-09 01:12:37The Click programming language was developed to configure Click routers, but nowadays you also can use it to write test cases for Click elements. Basic SyntaxElement GroupCompound ... -
.click()与on('click',function())
2018-10-17 21:34:25之前遇到过一次.click()无效,改成on绑定click就好了的情况,看了几篇博客后,发现是自己对click()和on的理解不够,没太在意,最近又遇到了,所以写下这篇博客加深印象。 $(选择器).click(fn):当选中的选择器被... -
jquery移除click事件
2018-10-18 10:45:021、第一种定义click时间的方法是在标签内部加上onclick的属性如下 <input id = "demoId" type="button" onclick="demoFunction();" value="单击事件"/> ... -
同时绑定click和double click冲突的问题
2018-03-09 19:33:28click":fn,"dblclick":fn});$("abc").click(fn).dblclick(fn)目前的问题是无论双击或者单击都只执行单击的function,为什么呢? 下面我们说一下双击的机制:双击(dblclick)的流程是:... -
jquery 中click事件传递绑定click事件的元素本身
2016-01-26 07:22:21jquery 中click事件怎么传递绑定click事件的元素本身,也就是传递我点击的那个元素。 -
click事件嵌套click事件多次触发的解决方法
2018-06-15 17:41:45这个问题是在做一个聊天界面时出现的 想要的效果是点击左侧的头像时,获取其对应的id,之后在...分析后发现每次点击外部的click事件后,内部的click事件都会绑定一次,因此会遍历很多次 解决方案是每次点击后使... -
jquery table的click事件 会覆盖tr的click事件 咋办
2017-11-24 01:48:22$(table).click(function(){ alert(1) }) $(table tbody tr).click(funtion(){ alert(2)}) 这样子只会alert(1) 不会弹出2 有啥办法让他们都执行吗 -
关于jquery的click()和trigger(‘click‘)方法的一点问题
2018-06-20 00:46:57不过jquery就有一个非常简单好用的click()或者trigger('click')方法来模拟点击事件这两个方法可以说是非常简单好用了。但是这里我其实要说的是这个方法的一点问题。问题出现的场景是:当某个元素的点击事件... -
uniapp click语法
2019-04-03 22:45:53一般事件都加的是@click onNavigationBarSearchInputClicked(e) { console.log("事件执行了") uni.navigateTo({ url: '/pages/common/search/search' }); }, methods: { goSearchPage(path){ ... -
jquery的click笔记
2018-12-26 18:56:58// Auto listCustomers $(document).ready( function () { ...listCustomer click..."); $("#listCustomers").click(); } ); // List customers $("#listCustomers").click( ... -
click和tap事件
2019-04-03 11:26:53click和tap事件的区别 click事件 click事件是pc端的单机事件,但是当这个事件在移动端实现的时候,会出现延迟300ms的现象,所以移动端一般用tap来代替click。 tap事件 tap可以减少click在移动端的延迟,提高了性能。... -
jq的.click().on('click')
2018-12-04 08:41:18$(selector).on('click',function(){ }); 支持动态绑定元素,即页面上元素有添加或变化后仍可绑定,前提是selector须是目标绑定元素的父元素,如绑定body里的动态li元素: $('body).on('click','ul li',... -
Python——click模块
2019-08-24 15:09:47Click是Flask的开发团队Pallets的另一款开源项目,它是用于快速创建命令行的第三方模块。 我们知道,Python 内置了一个Argparse的标准库用于创建命令行,但使用起来有些繁琐,Click相比于Argparse,就好比requests... -
vue得click事件得两种写法@click=batchRemove和@click=batchRemove()得区别
2019-03-06 09:47:03@click=batchRemove没有括号时 batchRemove:function(可能有隐含的默认得参数可以获取){} 而一旦写了括号就不能有隐含得参数,你可以传一定的已知的参数 ... -
click已经安装好了 仍然提示ImportError: No module named click
2018-01-16 16:44:24网络上的方法都试过了,还是不行, 于是重复了下命令 pip install click ...于是去查看了下e:\anaconda3\lib\site-packages,发现里边并没有click文件,于是通过其他软件搜索到click文件,将这个文件 -
Click modular router (MIT开发的click路由器)下载及配置
2018-06-21 08:38:45click 开源软件下载 这里简单介绍一下click路由器,并说明如何下载。 click简介 出处 Click路由系统由美国MIT大学Eddie Kohler博士生在2000年完成原型开发,由MIT计算机技术系并行与分布式操作系统实验... -
解决blur与click冲突
2016-06-26 22:09:46在开发中我们会经常遇到blur和click冲突的情况。下面叙述了开发中常遇到的“下拉框”的问题,并提供了两种解决方案。一、blur和click事件简述 blur事件:当元素失去焦点时触发blur事件;其为表单事件,blur和focus... -
openlayers click事件覆盖
2017-06-26 09:06:44selectClick.on("select", ClickEvent); map.addInteraction(selectClick); } } }); 在openlays3中,将geojson中的数据分成n个图层,然后给每个图层添加鼠标移动事件是可行的,但是将...
-
jQuery动画.html
-
C++单链表的文件存取
-
操作系统:计算机类-源码
-
基于平面凹面光栅的面内混合等离子体模式的聚焦与解复用
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
太阳能真空管中金属玻璃密封件不匹配的残余应力分析
-
SpringBoot-探索回顾Spring框架本质
-
Unity RUST 逆向安全开发
-
使用 Linux 平台充当 Router 路由器
-
简单谈一谈数字孪生技术在信息化时代下如何推进电网的数字化发展.docx
-
Apache.NMS.AMQP-1.8.0-bin.zip
-
致所有看到的人
-
python批量处理文件名
-
Apache.NMS.ActiveMQ.1.8.0.nupkg
-
产品开发中如何进行敏捷测试?
-
案例研究-:条纹案例研究-源码
-
solarwinds安装所需文件.txt
-
wz1i.rar摄像头爆破工具只能用于研究
-
事务使用注意事项
-
需改linux的open files