先实例化Vue对象,再操作其他对象,Vue对象声明时会渲染html容器内的所有元素,
会导致元素事件失效或dom元素重新创建,所以涉及html元素的对象都要在实例化Vue之后执行。

下面是简要的例子,还望高手指点,目前猜测是对象赋值后,vue渲染元素将元素进行了改变导致之前的赋值对象变化了,无论是jquery对象还是dom对象都不行。

<div id="vm">
{{msg}}
<input type="button" value="试试"/>
</div>
<script>
//添加一下vue、jquery引用 //变量赋值放在这里,无法触发事件
//var colVm=$("#vm"); var testVue=new Vue({
el:'vm',
data:{
msg
}
}); //变量赋值放在这里,可以触发事件
var colVm=$("#vm"); $(function(){
colVm.click(function(){
alert("test");
});
});
</script>

如果非要将对象赋值放在实例化vue前面那可以使用jquery委托设置事件,亲测可用,.telegate()方法

<script>
$("body").delegate(colVm, "click", function(){
//do someing...
});
</script>

vue中向data对象赋值实际是类似js的数组赋值一样传递的是一个引用或者是指针,实际都指向同一块栈中保存值,所以两个对象任何一个变更值都会影响另一个取值,所以清空data的某一个对象时需要赋值一个浅拷贝副本,利用jQuery的$.extend()方法可以实现

实例:

<script>
//引用传递,两个变量名都影响值
var a=[1,2,3], b=a;
b[0]=111;
console.log(a[0])
//输出结果为: 111 //浅拷贝传递,两个变量名互不影响
var a=[1,2,3], b=$.extend({},a);
b[0]=111;
console.log(a[0])
//输出结果为:1 //浅拷贝传递,只拷贝一级,二级依然共享一个栈
var a=[[4,5],2,3], b=$.extend({},a);
b[0][1]=111;
console.log(a[0][1])
//输出结果为:111 //深拷贝传递,递归拷贝每一级的数据,达到完全区分栈中的值
var a=[[4,5],2,3], b=$.extend(true,{},a);
b[0][1]=111;
a[0][1]
//输出结果为:5
</script>

js中分为基本类型、引用类型

基本类型包括(存在栈中,不可以有属性和方法):数字、小数、字符串等,赋值是均是传递副本(number、string、boolean、null、undefined)

引用类型包括(对象名存在堆中,值存在栈中,堆中存有栈的内存地址来找到值,可以有属性和方法):数组、对象等(除了上面这些其他都是引用类型)

简单来讲基本类型传递的值、引用类型传递的指针,通过这个指针共同操作同一块栈内存

javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用,所以引用类型的值是按引用访问的。
准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址。
var person1 = '{}';
var person2 = '{}';
console.log(person1 == person2); // true
//两个值类型的==比较相当于是===的值比较,对比的值是否一样 var person1 = {};
var person2 = {};
console.log(person1 == person2); // false
//两个引用类型的比较是比较引用地址是不是一样

参考地址:http://blog.csdn.net/t_1007/article/details/53084349

实例化vue之前赋值html元素导致事件失效的更多相关文章

  1. vue 表格阻止父元素冒泡事件

    思路如下:1.给复选框定义一个类型,type="selection" 2.在点击函数中就可以使用判断条件来进行复选框的阻止冒泡.rowDetailShow(row, event, ...

  2. 解决jquery动态创建元素绑定事件失效问题

    存在问题 在我们使用jquery动态创建元素后往往会遇到一些问题,如: 给.button按钮绑定了点击时间,执行alert:(1); 点击事件代码如下: <script>$("# ...

  3. js动态加载html,加载后的页面元素某些事件失效的解决方案

    用 live 来绑定 例如: $("#items li .addToCartimg").live("click",function(){ $('.popDeta ...

  4. 中控考勤机使用 zkemkeeper SDK订阅考勤数据事件失效解决方式

    问题 前同事编写的对中控考勤机数据集成项目当中,打卡数据不能实时进行上传到平台当中,一直靠定时全量上传来同步数据. 阅读代码后,发现代码中有实时上传数据的逻辑,但是运行一段时间后,中控zkemkeep ...

  5. JQ 为未来元素添加事件处理器—事件委托

    随着DOM结构的复杂化和Ajax等动态脚本技术的运用,有了较多的动态添加进来的元素,直接用JQ添加click事件会发现新添加进来的元素并不能直接选取到,在这里就需要用到事件委托方法,JQ为事件委托提供 ...

  6. Vue.js-03:第三章 - 事件修饰符的使用

    一.前言 熟悉了 Vue 的指令系统后,在实际开发中,不可避免的会使用到对于事件的操作,如何处理 DOM 事件流,成为我们必须要掌握的技能.不同于传统的前端开发,在 Vue 中给我们提供了事件修饰符这 ...

  7. jquery父元素和子元素点击事件传递问题_不可把父元素的事件传递给子元素_事件无限循环传递

    前述:jquery中: 当一个元素的点击事件被触发时,会自动将该事件向父级元素逐级专递. 但是实际场景当中,我们可能会遇到需要在父级元素中定义点击事件,来触发特定子元素的点击事件,我就遇到了这么一个问 ...

  8. Vue的this.$root.Bus.$on事件被多次触发、多次监听的问题

    前端vue项目中,各个组件(非父子关系也可)之间可以通过Bus进行事件通信. main.js中: import Vue from 'vue' const Bus = new Vue(); const ...

  9. JavaScript的基础语法及DOM元素和事件

    一,JavaScript是什么? 1,JavaScript简称:js,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行.主要用来实现网页的动态效果,用户交互及前后端的数据传输等. 2,J ...

随机推荐

  1. 互联网世界中的C语言——我的golang学习笔记:1(基础语法快速过)

    前言 学习任何知识都会有一个学习背景 最近,我们团队乃至我司整个云服务,上go的呼声越来越高!新服务已经开始用go开发,部分现有Java版的服务重构为go也只是时间问题而已,故相关技术积累势在必行!在 ...

  2. C#:委托(delegate)和事件(event) (转)

    委托(delegate): 它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现.下面来看看它的实现步骤: 声明一个delegate对象. 实现和delegate具有相同 ...

  3. 有var和没有var的本质区别

    我们创建一个变量: var a = 100: 同时,大家也知道,就是不写var关键字也可以创建.在很多教程和说法中,将没有var 的这个名称称之为“全局变量”.如果我在全局直接写一个var abc = ...

  4. C语言中无符号数和有符号数之间的运算

    C语言中无符号数和有符号数之间的运算 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了. un ...

  5. JVM启动参数设置

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt174 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正 ...

  6. Java IO包装流如何关闭

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt381 问题: (1)JAVA的IO流使用了装饰模式,关闭最外面的流的时候会自 ...

  7. Project 3:N级魔方阵

    魔方阵:由n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质,称为魔方阵.而这个相等的和称为魔术数字.若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵. 目标:输入一 ...

  8. 发布一个Python小程序:ManHourCalendar

    程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...

  9. NHibernate教程(21)——二级缓存(下)

    本节内容 引入 使用NHibernate二级缓存 启用缓存查询 管理NHibernate二级缓存 结语 引入 这篇我还继续上一篇的话题聊聊NHibernate二级缓存剩下的内容,比如你修改.删除数据时 ...

  10. 【Beta阶段】第五次scrum meeting

    Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 查阅换肤功能相关资料 100% 着手联网功能 100 DEV 完成分享邀请 ...