为什么我的Javascript不适用于通过AJAX添加的对象

为什么我的Javascript不适用于通过AJAX添加的对象,javascript,jquery,ajax,post,Javascript,Jquery,Ajax,Post,因此,当某些对象发生变化时,我的页面上有一些JavaScript函数可以执行,这很好 在我的页面上,我可以通过AJAX/post等添加更多这些对象,这也很好 但是,除非我将JavaScript粘贴到$document.ajaxStop中,否则我编写的JavaScript将无法用于这些新添加的对象 我已经通过移动代码解决了这个问题,但是有人能给我解释一下为什么会这样吗?我不知道,而且对整个过程都很陌生,但我的谷歌搜索并没有真正让我恢复过来。原因可能是我没有用谷歌搜索正确的术语,我想知道我是否在用最

因此,当某些对象发生变化时,我的页面上有一些JavaScript函数可以执行,这很好

在我的页面上,我可以通过AJAX/post等添加更多这些对象,这也很好

但是,除非我将JavaScript粘贴到$document.ajaxStop中,否则我编写的JavaScript将无法用于这些新添加的对象

我已经通过移动代码解决了这个问题,但是有人能给我解释一下为什么会这样吗?我不知道,而且对整个过程都很陌生,但我的谷歌搜索并没有真正让我恢复过来。原因可能是我没有用谷歌搜索正确的术语,我想知道我是否在用最好的方式来做

我举的具体例子是:

$(".subTable").change(function(event){
    $myObj = $(event.target)
    var objID = $myObj.attr('name')
    var objClass =$myObj.attr('class')  
    var objVal = $myObj.val();

    $newObj = $myObj.closest('td').next('td').find('input[type = checkbox]')
    var checkedval = $newObj.is(":checked");

    if((objVal!= "") && (!checkedval)){
        $newObj.click();
    }
    if(objClass=="subField"){
        updateHiddenField(objID)    
    }

  });
在我添加新对象之前,这会很好地工作,然后只有在我将它们放入其中时,它们才会工作:

$(document).ajaxStop(function () {

});

当您通过js向页面添加新元素时,这些新添加的元素不会附加以前的事件。因此,您应该在将元素添加到页面后立即附加事件


还可以使用jquery使用.on来附加事件。这也将为新添加的元素附加事件。

因为您没有发布任何代码,所以很难说,但我可以猜测它与使用vs有关:

$'selector'。单击-当您将事件绑定到dom中的元素时,它将仅对这些元素起作用,即,除非您在添加元素后专门将事件绑定到这些元素,否则它不会对动态添加的元素起作用。这可能是将代码移动到ajaxStop时它起作用的原因

$'ul'。单击'click','li',函数{}-这将对动态添加的元素起作用。请注意,绑定事件时绑定到的元素必须在dom中,即在这种情况下,绑定事件时“ul”必须在dom中,但“li”可以是动态的


你能展示代码吗?你说的是哪种javascript代码?请注意,例如,处理程序绑定到DOM中已经存在的元素。您仍然可以将事件委托给最近的静态容器。恐怕我没有意识到,在这个例子中,代码会有这么大的帮助,因为我认为这个问题很一般@fatman设法猜对了我的困境,尽管我不知道javascript中有一个on,所以现在将重构我的代码以使用它!感谢你的猜测,在这个特定的例子中,它是“更改”,但我猜这与“单击”是一样的,所以同样的事情是必需的。谢谢你的解释,我会去更新我的代码你说得对,所有的助手方法都是一样的。