jquery 通过append追加一个select,然后要给select change事件,在火狐下面没问题,但是在ie下面却不能运

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 通过append追加一个select,然后要给select change事件,在火狐下面没问题,但是在ie下面却不能运相关的知识,希望对你有一定的参考价值。

代码:
$("#item_list").append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr><td><select name=\"pur_classid[]\" id=\"type"+newid+"\" class=\"pur_classid\">"+$("#optionst").html()+"</select></td><td><div id=\"stype"+newid+"\"><select name=\"select\" id=\"select\"><option>选择产品</option></select></div></td><td>"+$("#copy_info").html()+"</td><td><a href=\"javascript:void(0)\" class=\"del_item\"><img src=\"public/images/admin/close.png\" /></a></td>");

$(".pur_classid").live("change",function()
//alert("123");
var index = $(this).attr("id");
key = index;

myajax("admin/purchase.htm?act=product&typ=index&classid="+this.value,"sfun(msg,key)");
);

function sfun(msg,key)
if(msg)
$("#s"+key+" select").remove();
$("#s"+key).append(msg);

把这段代码:
$(".pur_classid").live("change",function()
//alert("123");
var index = $(this).attr("id");
key = index;

myajax("admin/purchase.htm?act=product&typ=index&classid="+this.value,"sfun(msg,key)");
);
写进一个function。比如
function ChangeList()
$(".pur_classid").live("change",function()
//alert("123");
var index = $(this).attr("id");
key = index;

myajax("admin/purchase.htm?act=product&typ=index&classid="+this.value,"sfun(msg,key)");
);

然后
function sfun(msg,key)
if(msg)
$("#s"+key+" select").remove();
$("#s"+key).append(msg);

ChangeList();//这里调用
参考技术A   尊敬的用户,您好!很高兴为您答疑。
  使用append方式进行代码控件组装有个很敏感的问题,就是转义字符(如常见的换行符等),此类字符在肉眼甚至开发IDE的界面都无法用肉眼识别,但是浏览器会敏感,会直接导致浏览器的渲染异常。因此建议您仔细检查一下您的字符输出。
  希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
参考技术B 不用live 换成bind吧~~追问

不行,我试了,如果那样只是最开始显示出来的能用,后面追加的一样不能用

追答

你这个是在操作当中为对象绑定事件。

正常来说bind()方法是可以的,只不过第二次出现的时候需要重新绑定。
live()方法应该可以解决这样的问题,不过可惜,就上面代码还真说不好问题出在哪里!

参考技术C 请考虑 jtemplates 参考技术D 什么玩意儿?

append追加元素绑定事件无效的解决办法

问题是:通过jQuery append(或者before、after,一样)新添加进网页的元素,常用的事件不能触发,比如:append了id 为 abc 的元素,那么 $(#abc).click(function(){})是没有效果的。

1. 网上说要用live()函数,亲测无效,应该是jQuery的版本问题,反正到目前为止是不能用了;

2. 解决方法:用on函数,要注意格式(楼主搞了半天,因为格式不对,哎,不说了…都是泪)

         正确格式: $("outerSelector").on(‘eventType‘,‘selector‘,function(){});
          outerSelector 是一个一直存在的DOM, selector是你要监听点击的节点;
   例子: $(function(){
            $("form").on(‘click‘,"[class=‘image‘]",function(){
                this.remove();
            })
        })

突然发现各种知识深似海啊 要努力学习

以上是关于jquery 通过append追加一个select,然后要给select change事件,在火狐下面没问题,但是在ie下面却不能运的主要内容,如果未能解决你的问题,请参考以下文章

jquery中append和appendto的区别

jquery怎样给select框选中赋值

.append 之后的 jQuery 函数

jquery 追加元素的方法(append prepend after before 的区别)

jquery中append与appendTo方法区别

jQuery HTML 操作