今天搞一个连环套的动态选项展示,需要给下拉框动态绑定事件,谁知绑定中出现问题,总是执行第一次绑定的时间而后续绑定的事件没有被触发。

 //重写增加行方法
function initMainItem(gridId){
jqgrid = $('#' + gridId);
var colModel = jqgrid.jqGrid().getGridParam("colModel");
var rowid ="rowid" + new Date().getTime();
jqgrid.jqGrid("addRowData", rowid, JSON.stringify(colModel), "last");
jqgrid.editRow(rowid, true);
var optTd = $("#" + rowid + " td[aria-describedby='basMgmtGridIdGrid_opt']");
var buttonStr= '<a href="#" class="btn btn-xs btn-danger" onclick="delRowData(\'' +
rowid+'\')"><i class="fa fa-trash"></i>&nbsp;删除</a>&nbsp;&nbsp;';
optTd.html(buttonStr);
jqgrid.jqGrid('setSelection',rowid);
var option = "";
for(var key in itemData) {
option += "<option role='option' value='" + key + "'>" + mainItemDict[key] + "</option>";
}
var mainItem = $("#" + rowid + " select[name=mainItem]");
mainItem.html(option);
mainItem.change(function () {initSubItem(mainItem);});
initSubItem(mainItem);
} function initSubItem(mainItem) {
var mainItemKey = mainItem.val();
var priceItems = itemData[mainItemKey];
var option = "";
for(var key in priceItems) {
option += "<option role='option' value='" + key + "'>" + key + "</option>";
}
var subItem = mainItem.parent("td").next("td").children();
subItem.html(option);
subItem.change(function () {initItem(subItem, priceItems);});
initItem(subItem, priceItems);
} function initItem(subItem, priceItems) {
var subItemKey = subItem.val();
var priceItem = priceItems[subItemKey];
var unitItem = subItem.parent("td").next("td");
unitItem.html("<span class='form-control' style='background-color:transparent;border-color:transparent'>" + unitDict[priceItem.unit] + "<span>");
}

  注意两个动态绑定,其实很简答的知识,绑定新事件前要清除旧事件,因为js默认不覆盖,这些都是学过的,就是不出错get不到啊。

  改为:

 subItem.unbind("change").change(function () {initItem(subItem, priceItems);});

JS动态事件绑定问题的更多相关文章

  1. jQuery插件 -- 动态事件绑定插件jquery.livequery.js

    http://blog.csdn.net/zzq58157383/article/details/7721974 动态事件绑定插件livequery, 可以利用它给相应的DOM元素注册事件或者触发回调 ...

  2. [HTML5]原生事件绑定和jquery动态事件绑定的区别

    原生事件绑定: <!-- 标签上绑定的事件是由window对象帮助调用,因此方法内的this其实是window对象 --> <label><input type=&quo ...

  3. jquery 动态事件绑定(0512)

    jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",fun ...

  4. JS基础——事件绑定

    上一篇博客JS事件对象中,老师问JS事件处理和VB中的事件处理有什么联系?先来解决一下这个问题.举个VB.net中事件处理的样例(JS敲久了,VB习惯的都不熟悉了,看来得常常回想了): 1.事件处理V ...

  5. JS中事件绑定的三种方式

    以下是搜集的在JS中事件绑定的三种方式.   1. HTML onclick attribute     <button type="button" id="upl ...

  6. js中事件绑定要注意的事项之如何在方法中自己打印自己的值

    下面是错误的js方法绑定,这样写会造成在方法中不能用 调用方法的dom本身的一些 东西,如各种属性或者jq对象等. <!DOCTYPE html> <html> <hea ...

  7. JS的事件绑定、事件流模型

    .t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.JS事件 (一)JS事件分类 1.鼠标事件:click/dbclick ...

  8. JS中事件绑定函数,事件捕获,事件冒泡

    1 事件绑定:事件与函数绑定以及怎么取消绑定 1.1 元素.onclick这种形式,如下: <div id="div1">aaa</div> <scr ...

  9. dom元素操作(动态事件绑定)

    遇到的问题:动态生成的内容,事件绑定会出错. 例子:http://snowinmay.net/jqm/dom-learn2.html 1.绑定事件对动态生成的新元素无效. 问题描述:bind事件绑定后 ...

随机推荐

  1. 【BZOJ2616】SPOJ PERIODNI 笛卡尔树+树形DP

    [BZOJ2616]SPOJ PERIODNI Description Input 第1行包括两个正整数N,K,表示了棋盘的列数和放的车数. 第2行包含N个正整数,表示了棋盘每列的高度. Output ...

  2. 比较好用的Opera 翻译工具 ddict

    http://ddict.me

  3. 区分兼容IE6/IE7/IE8/IE9/FF的CSS HACK写法

    HACK原理:不同浏览器对各中字符的识别不同 在 CSS中常用特殊字符识别表: (1)*:  IE6+IE7都能识别*,而标准浏览器FF+IE8是不能识别*的; (2)!important: 除IE6 ...

  4. Spring MVC静态资源访问

    最近在学习servlet的时候发现自己不能访问到css和js, 于是google一番学到不少方法加载,总结如下: 1.对于Spring MVC, 由于我们截获了所有请求<url-pattern& ...

  5. Spring--简记

    Spring通过一个配置文件描述Bean及Bean之间的依赖关系,利用Java语言的反射功能实例化Bean并建立Bean之间的依赖关系. Spring的IoC(控制反转)容器提供了Bean实例缓存.生 ...

  6. Ubuntu下编译C语言程序(同时给编译生成的文件命名)

    1.创建c文件 test.c touch test.c 2.编写test.c vim test.c #include "stdio.h" int main(){ printf(&q ...

  7. python - while语句/pass/死循环/break/continue/while...else...

    程序开发的原则: 写重复代码 是可耻的行为: 1.while 条件: 执行代码... #循环打印0-100count = 0 while count <= 100: print("lo ...

  8. apt-get 报 The following signatures were invalid: KEYEXPIRED 错误

    apt-get 原理: 参考:https://blog.csdn.net/a13526758473/article/details/79247478 apt对它所管理的每一个程序包都有一对公钥和私钥, ...

  9. MySQL - 查询今天的数据(以及昨天、本月、上个月、今年...) 查询Datetime 时间的数据

    1,查询当天(今天)的数据 1 SELECT * FROM `order` WHERE TO_DAYS(order_time) = TO_DAYS(NOW()) 2,查询昨天的数据 1 SELECT  ...

  10. nginx日志配置(cookie,header,post等字段记录)

    如果你对nginx日志格式,有这样那样的要求. 那么就看一下说明吧. $remote_addr The remote host $remote_user The authenticated user ...