29

我们如何使用 jQuery 。on()事件方法load?例如代码是:

<a href="#" id="add">Add</a>
<div id="initial">
     <input type="text" class="abc" name="in">
</div>

和它的jQuery:

jQuery(document).ready(function() {
    var x=$('#initial').html();
    $('#add').click(function(){
        $('body').append(x);
    });
    $(document).on('load','.abc',function(){
        alert('started');
    });
});
4

4 回答 4

24

参考http://api.jquery.com/on/

它说

在所有浏览器中,加载、滚动和错误事件(例如,在<img> 元素上)不会冒泡。在 Internet Explorer 8 及更低版本中,粘贴和重置事件不会冒泡。此类事件不支持与委托一起使用,但可以在事件处理程序直接附加到生成事件的元素时使用。

如果您想在添加新输入框时执行某些操作,则只需在添加后编写代码即可。

$('#add').click(function(){
        $('body').append(x);
        // Your code can be here
    });

如果您希望在加载文档中的第一个输入框时执行相同的代码,那么您可以编写一个函数并在两个地方调用它,即$('#add').click文档的就绪事件

于 2012-07-11T03:38:40.743 回答
11

我不确定你在这里要做什么——到jQuery(document).ready()执行的时候,它已经加载了,因此document已经调用了 load 事件。此时附加load事件处理程序将不起作用,并且永远不会被调用。如果您在alert文档加载后尝试“开始”,只需将其放在(document).ready()调用中,如下所示:

jQuery(document).ready(function() {
    var x = $('#initial').html();
    $('#add').click(function() {
        $('body').append(x);
    });
    
    alert('started');
    
});​

如果,因为您的代码似乎也暗示,您想在.abc加载时触发警报,请将其放在单独的.load处理程序中:

jQuery(document).ready(function() {
    var x = $('#initial').html();
    $('#add').click(function() {
        $('body').append(x);
    });
    
    $(".abc").on("load", function() {
        alert('started');
    })
});​

最后,我认为jQuery在一个地方和$另一个地方使用没有什么意义。通常最好保持代码一致,并且可以在任何jQuery地方或$任何地方使用,因为两者通常可以互换。

于 2012-07-11T03:38:41.563 回答
8

运行函数 onLoad

jQuery(window).on("load", function(){
    ..code..
});

运行代码 onDOMContentLoaded(也称为 onready)

jQuery(document).ready(function(){
    ..code..
});

或推荐的 onready 简写

jQuery(function($){
    ..code.. ($ is the jQuery object)
});

加载文档时触发 onready

onload 在文档和所有相关内容(例如页面上的图像)已加载时触发。

于 2013-12-16T11:40:36.263 回答
0

正如其他人所提到的,加载事件不会冒泡。相反,您可以使用自定义事件手动触发类似加载的事件:

$('#item').on('namespace/onload', handleOnload).trigger('namespace/onload')

如果您的元素已经在监听change事件:

$('#item').on('change', handleChange).trigger('change')

我觉得这很好用。不过,我坚持自定义事件更明确并避免副作用。

于 2019-11-15T06:20:10.367 回答