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

 //重写增加行方法
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. Git 安装与使用

    http://blog.csdn.net/lishuo_os_ds/article/details/8078475#sec-1.8.2 http://blog.csdn.net/showhilllee ...

  2. 安装顺序----------SQL server 2008 r2;VS2008;VS2010;

    [1]一般先安装了VS2008 再安装SQL server 2008 r2会报错:安装sql server 2008 报错“检查 Microsoft Visual Studio 2008 的早期版本” ...

  3. Mybatis整理系列(01)————传入参数方式以及#{}与${}的区别

    一.在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和 ...

  4. jqGrid设置符合条件的行选中

    1.描述:在loadComplete的时候,符合zoneCode列不为null的被选中,第一列为zoeCode2.问题:已经获取到zoneCode不为null的列,但是该行一直没有选中.3.截图:4. ...

  5. java基础---->string字面量的使用

    这里简单的理解一下java中关于string字面量的知识,关于字节码可以使用java自带的javap工具查看. string字面量 一.直接贴出测试的代码 A string literal alway ...

  6. uva 110 Meta-Loopless Sorts 用程序写程序 有点复杂的回溯水题

    题目要求写一个直接用比较排序的pascal程序,挺有趣的一题. 我看题目数据范围就到8,本来以为贪个小便宜,用switch输出. 然后发现比较次数是阶乘级别的,8的阶乘也是挺大的,恐怕会交不上去. 于 ...

  7. Java之Tomcat、Dynamic web project与Servlet

    一.Tomcat配置 Conf   Config   configration   -->配置 Service.xml:用来配置Tomcat Tomcat_users.xml:用来配置Tomca ...

  8. ZOJ3690—Choosing number

    题目链接:https://vjudge.net/problem/ZOJ-3690 题目意思: 有n个人,每个人可以从m个数中选取其中的一个数,而且如果两个相邻的数相同,则这个数大于等于k,问这样的数一 ...

  9. android sdk 中跨平台部分

    跨平台部分: platforms samples sources system-images 这几个可以直接拷贝即可

  10. c# winfrom实时获取斗鱼房间弹幕

    效果图如下: 通过webBrowser获取,时钟控件刷新弹幕,正则匹配数据,用第二个webBrowser显示弹幕内容.老话,并没完善.请自行完善.有个dll是用来屏蔽webBrowser的声音的,可能 ...