jQuery选择“更改”事件未触发
我有三个依赖选择。 第一个,有一些价值。jQuery选择“更改”事件未触发
<select id="first">
<option value="1">v1</option>
<option value="2">v2</option>
</select>
第二和第三都是空白:
<select id="second"></select>
<select id="third"></select>
我想通过Ajax请求来填充空白的选择。 所以我做的:
jQuery('body').delegate('#first','change',function(){
jQuery.ajax(
{
'type':'GET',
'data':{'changed':$('#first').val()},
'url':'myURL1',
'cache':false,
'success':function(html){jQuery("#second").html(html)}});
return false;
});
所以它工作正常。第二个选择被填充,但是...没有'选择'第二个'更改'事件被触发。 为了得到这个事件中,我写道:
$(document).ready(function()
{
$('#second').live("change", function()
{
alert('test');
});
});
但是,没有警报“测试”是可见的。如何捕获动态加载内容的“更改”事件以供第二选择?
由于#second元素只是存在没有,如果你想在组装第二个选择以后做告警使用权委托和现场功能
$('#first').change(function(){
$.ajax(
{
'type':'GET',
'data':{'changed':$('#first').val()},
'url':'myURL1',
'cache':false,
'success':function(html){
$("#second").html(html);
}
});
return false;
});
$('#second').live("change", function()
{
alert('test');
});
,然后包括在您的“关于” $。阿贾克斯()
$('#first').change(function(){
$.ajax(
{
'type':'GET',
'data':{'changed':$('#first').val()},
'url':'myURL1',
'cache':false,
'success':function(html){
$("#second").html(html);
$("#second").change();
}
});
return false;
});
谢谢。 – x17az 2010-08-19 19:09:33
您正在使用什么版本的jQuery?在1.4.x之前的任何内容都不支持change
的live
事件。
(见Why doesn't jQuery 1.3.3. live() support all events?)
下面是API它http://api.jquery.com/live/
可以在注意事项,请参阅:
在jQuery的1.3.x的只有以下 JavaScript事件(除到 自定义事件)可以绑定到 .live():click,dblclick,keydown, keypress,keyup,mousedown,mousemove, mous eout,mouseover和mouseup。
更改为.change(function(){})没有结果 – x17az 2010-08-19 15:10:10
据jQuery的jQuery的从1.7更新其版本的介绍的回调函数在这里看到http://api.jquery.com/on/。所以如果你明确地使用下面的方式,它会调用“更改”事件。
$(document).ready(function()
{
$('#second').on("change", function()
{
alert('test');
});
});
您想在加载数据后立即启动#second的更改事件吗?如果您手动更改第二个选择,则警报框应与您的实际代码一起显示。 – davehauser 2010-08-19 14:51:17
您使用的是哪个版本的jQuery? – 2010-08-19 14:54:34
顺便说一句:我会acoid混合jQuery()和$() – davehauser 2010-08-19 14:54:43