1

所以,我所拥有的是一个发生大量 ajax 的页面。

Ajax 加载产品表。表格中有用于更新和删除项目的各种按钮。除非我在成功函数中嵌套 $(document).ready,否则这些按钮不起作用。

如何重新加载页面以便可以查看和访问新元素?

我不能使用 window.reload() ,因为这会将整个页面完全刷新回其原始状态。而我只希望新添加的 ajax 内容能够与更多 ajax 一起使用

这是我的代码目前的样子......

$('#viewProductButton').click(function() {
                //$('#subSubCat').hide();
                //var id = $(this).val();
                var subID = document.getElementById("subCategory").value;
                var subSubID = document.getElementById("subSubCat").value;
                $.ajax({
                url: 'products/viewProdTable/'+subID+'/'+subSubID,
                success: function(data) {
                    // display results table of user selected products
                    $('#viewProducts').fadeIn(100, function(){
                        $(this).html(data);
                    })
                }
                }); // end ajax
            });`

所以在我的新数据输入到#viewProducts 之后,它有一些按钮可以利用ajax 来执行其他功能。除非我将 doc.ready 放在 #viewProducts 函数中,否则它们将无法工作。

还有什么我可以做的,因为我将继续拥有所有这些嵌套的 doc.ready 功能,因为页面非常具有交互性。

我希望这是有道理的!

4

3 回答 3

0

您的新按钮没有绑定事件处理程序。您的 doc.ready 很可能会进行绑定。

您需要在 doc.ready 函数中添加它们或使用委托:

jquery网站有这个例子

于 2012-11-16T04:25:47.330 回答
0

试试这个 $('#viewProductButton').live('click',function() { alert("do your work"); })

于 2012-11-16T04:29:47.513 回答
0

将它放在您的初始页面加载脚本中,它会将点击绑定到元素,无论它是从一开始就存在还是通过 ajax 动态添加:)

 $('body').on('click' , '#viewProductButton' , function() {
 // Do stuff....
 });

You can see how to lay it out, so just change the element ID to whatever element you would like to bind the click to, and you can change the ' click' to whatever you need, like ' hover' or ' change' and so on...

于 2012-11-16T06:27:57.000 回答