-2

我想模拟点击动态附加的元素。但是我使用的代码不起作用。我不知道我该如何继续我的剧本。我.trigger()在窗口的加载事件上使用了方法。这没用。

代码:

$( function() {
    $.post("ajaxify.php", "name=Heart", function(html) {
        $("#menu ul").append("<li>"+html+"</li>");
    });
});
$(window).load( function() {
    $("#menu ul li").trigger("click");
});
4

4 回答 4

3

将新的 'li' 元素添加到菜单时,您可以触发对那个列表元素的单击:

$('<li />').text('My text here').appendTo('#menu ul').trigger('click');
于 2013-05-02T10:45:12.847 回答
2

您模拟点击的代码是正确的,但它在错误的时间被调用。传递给的函数内的代码在$(window).load()窗口完成加载时执行一次,并且只会影响执行代码时存在的元素(因此不会影响您动态添加的元素)。

在添加动态添加的元素后,您只需调用该行代码,因此在successAJAX 调用的回调函数结束时。

为了避免您修改现有代码,它可能 - 如果它是页面上提交的唯一 AJAX 请求 - 可以使用该ajaxSuccess事件来触发点击:

$(document).on('ajaxSuccess', function() {
    $('#menu ul li').trigger('click');
});
于 2013-05-02T10:43:49.797 回答
0

这种情况的最佳竞争者是“开”方法。它适用于动态添加的元素

$('#menu').on('click', 'ul li' function() {  // ul li is the context passed to the funciton
 //do something
});
于 2013-05-02T10:42:58.390 回答
0

您可以使用 jquery 的on()方法为 DOM 中的某个元素注册您的事件。

于 2013-05-02T10:43:59.820 回答