2013-01-02 64 views
2

可能重复:
Why does jQuery or a DOM method such as `getElementByID` not find the element?如何加载使用脚本.load()

我加载文件使用jquery.load()。在我的load_to.html中,我将目标设为ID为

$('#users').change(function() { 
    alert('hello'); 
}); 

此元素存在于load_from.html中。我无法瞄准这一点。但是当我检查页面时,我可以看到这个元素。

我加载页面这样

$('#mydiv').load('/user/1/edit form'); 

如何定位的元素?

+0

@roXon你这是什么意思呢? –

回答

6

使用on在它的委托签名:

$('#mydiv').on('change', '#users', function() { 
    alert('hello'); 
}); 

Read the docs

+0

有趣的是,如何没有人高举提问者。真正需要投票的人。 :)新年快乐兄弟! +1 –

+0

@roXon,它可能是一个很好的问题,如果它不是很常见,甚至在[jQuery常见问题](http://docs.jquery.com/Frequently_Asked_Questions#Why_do_my_events_stop_working_after_an_AJAX_request.3F)顺便说一句,他们显示与装载函数(mcpDESIGNS)绑定的方式,我的方式... – gdoron

1

尝试在.load的回调中设置您的事件,以确保在元素进入DOM时创建它们。

$('#mydiv').load('/user/1/edit form', function() { 

    //Callback 
    //set up events here (once it is finished loading) 

    $('#users').change(function() { 
     alert('hello'); 
    }); 
}); 
+0

再次不,不,并没有错,但它不是somsone应该写jQ的方式。这就是为什么我们有(.live())'.on()'方法。加载回调不应该包含将来的事件,至少不能用于清晰的代码。在一个负载c.b.内您希望看到某些功能会在成功响应后发生,而不会看到事件委派。 –

+0

@roXon,事实上我没有看到这种方法没有错,我认为这是完全有效的! +1 – gdoron

+0

@gdoron不要强迫我这样回答,导致**是**,这是完全正确的,只是想分享我的想法和编写逻辑代码的方式。 –

相关问题