Javascript 为什么jQuery代码在Chrome和Firefox中运行良好,但在IE9中却不行?
如果我去掉Javascript 为什么jQuery代码在Chrome和Firefox中运行良好,但在IE9中却不行?,javascript,jquery,asp.net-mvc-3,razor,Javascript,Jquery,Asp.net Mvc 3,Razor,如果我去掉>选项,它会工作,但显然这不会产生 预期效果。我已经尝试了$('.ProductsInCatList option')和$('.ProductsInCatList')。查找('option')无效。哪一种都可以 在Firefox和Chrome中。我只想在选择该选项时执行代码 从多选列表中。使用jquery1.6.4更新:好的,显然IE9不适用于option元素的点击事件,这里我认为我已经取消了这个按钮控件 $('.ProductsInCatList') .delega
>选项
,它会工作,但显然这不会产生
预期效果。我已经尝试了$('.ProductsInCatList option')
和$('.ProductsInCatList')。查找('option')
无效。哪一种都可以
在Firefox和Chrome中。我只想在选择该选项时执行代码
从多选列表中。使用jquery1.6.4更新:好的,显然IE9不适用于option元素的点击事件,这里我认为我已经取消了这个按钮控件
$('.ProductsInCatList')
.delegate("option","click", function () {}); //<-- Also does not work
HTML
加工机
英特尔第二代Core i7 2600插槽1155处理器
英特尔第二代Core i5 2500插槽1155处理器
英特尔酷睿i7-2700
英特尔酷睿i5-2400
i3-2100T
英特尔Core i7 950插槽1366处理器
英特尔Core i7 930 Socket 1366处理器
英特尔至强X5690
英特尔至强X5870
我总是发现.live()有很多bug-与scope相关的各种奇怪bug
提供。ProductsInCatList在页面加载时显示以下内容是等效的,并且根据我的经验更可靠
$('.ProductsInCatList').delegate("option", "click", function () {
//
});
我总是发现.live()有很多bug-有各种各样与scope相关的奇怪bug
提供。ProductsInCatList在页面加载时显示以下内容是等效的,并且根据我的经验更可靠
$('.ProductsInCatList').delegate("option", "click", function () {
//
});
另一种方法是重构代码。 你把范围缩小到了选择器-那么像这样的东西怎么样:
$('option.ProductsInCatListOption').live('click', function () {
var option = $(this).clone();
alert('works');
var slist = $(this).parent().prev('.SelectedList');
option.appendTo(slist);
$(this).detach();
});
HTML:
另一种方法是重构代码。 你把范围缩小到了选择器-那么像这样的东西怎么样:
$('option.ProductsInCatListOption').live('click', function () {
var option = $(this).clone();
alert('works');
var slist = $(this).parent().prev('.SelectedList');
option.appendTo(slist);
$(this).detach();
});
HTML:
选项的所有事件,包括单击事件
最好的方法可能是使用onchange
选择:
$('body').delegate(".ProductsInCatList", "change", function () {
var option = $(this).find(":selected")
...
});
唯一的区别是,只有当用户更改所选选项时,才会触发它。选项的所有事件,包括单击事件
最好的方法可能是使用onchange
选择:
$('body').delegate(".ProductsInCatList", "change", function () {
var option = $(this).find(":selected")
...
});
唯一的区别是,只有当用户更改所选选项时才会触发。您是否也可以发布HTML,以便我们可以看到哪些类名与哪些元素相关。应该注意的是,
live
已被弃用,因为JQuery 1.4
,这几天我们在JQuery 1.7.1
上……您是否在没有空格的情况下尝试过:'.ProductsInCatList>option'?@BiAiB。它应该是有空间的@格多龙:从技术上讲,它是在1.7年折旧的;从jQuery1.7开始,不推荐使用.live()方法。Use.on()…您是否也可以发布您的HTML,这样我们就可以看到哪些类名与哪些元素相关。应该注意的是,live
是不推荐的,因为JQuery 1.4
,我们这几天在JQuery 1.7.1
上……您是否尝试过没有空格的方式:'.ProductsInCatList>option'?@BiAiB。它应该是有空间的@格多龙:从技术上讲,它是在1.7年折旧的;从jQuery1.7开始,不推荐使用.live()方法。Use.on()…我的选项列表是自动生成的,我使用的是MVC帮助程序(ASP.NET)。我不相信我可以在选项元素上设置类。我想你可以用jQuery来实现这一点,否则,你可以在所有选项元素上执行事件并测试父元素。有点像散弹枪,但考虑到这些限制,我看不到其他方法。我的选项列表是自动生成的,我使用的是MVC帮助程序(ASP.NET),我不相信我可以在选项元素上设置类。我想你可以用jQuery来做,否则,你可以在所有选项元素上做一个事件,并测试父元素。有点像猎枪,但考虑到这些限制,我看不到另一种方法。我还没意识到IE9还是由failDang组成的!看来没有实际的办法。此外,我使用的是多选,而不仅仅是下拉选择列表;(然后只有“选择”下的一个按钮,或者如果您确实需要它,请每隔1秒检查此“选择”中的选定选项并更新另一个。@meze更改Jquery版本也不会有任何效果,对吗?因此这基本上是一个IE9错误。@LaserBeak认为没有帮助。Jquery只是javascript事件的包装器,IE没有选项eleme的事件不管怎么说,你的点击解决方案不是很好,我不能一次点击选择多个项目(我的意思是按住鼠标)。很好,先生。我还没意识到IE9还是由failDang组成的!看起来没有实际的方法。而且我使用的是多选而不仅仅是下拉选择列表。没有注意到;(然后只有“选择”下的一个按钮,或者如果您确实需要它,请每隔1秒检查此“选择”中的选定选项并更新另一个。@meze更改Jquery版本也不会有任何效果,对吗?因此这基本上是一个IE9错误。@LaserBeak认为没有帮助。Jquery只是javascript事件的包装器,IE没有选项eleme的事件不管怎样,你的点击解决方案不是很好,我不能一次点击选择多个项目(我的意思是按住鼠标)。
$('body').delegate(".ProductsInCatList", "change", function () {
var option = $(this).find(":selected")
...
});