2017-03-09 60 views
0

我有加载内容使用AJAX。需要调用ajax加载的内容。我也尝试了一些代码,但没有运气与此。单击AJAX加载的内容和动态ID事件

jQuery(document).ready(function(){ 
     var itemId = '<?php echo $_item->getId(); ?>'; 

     jQuery("#cart-sidebar").on("click", '.increment_qty_'+itemId, function(event) { 
      console.log("work"); 
     }); 

     jQuery("#cart-sidebar").on("click", '.increment_qty_<?php echo $_item->getId(); ?>', function(event) { 
      console.log("work"); 
     }); 
}); 
+0

你有什么问题?你在哪里叫阿贾克斯? – user7417866

+0

当页面第一次加载时,你会得到'itemId',它不是来自AJAX。 AJAX是否真的用'itemId'返回元素,还是动态改变? – Barmar

+0

是的,我每次都得到itemId,但这个点击事件js也加载到ajax成功 –

回答

0

尝试绑定的事件记录,这确保了无论何时元素在DOM发现它可以发射

jQuery(document).ready(function(){ 
     var itemId = '<?php echo $_item->getId(); ?>'; 

      jQuery(document).on("#cart-sidebar","click", '.increment_qty_'+itemId, function(event) { 
      console.log("work"); 
     }); 

     jQuery(document).on("#cart-sidebar","click", '.increment_qty_<?php echo $_item->getId(); ?>', function(event) { 
      console.log("work"); 
     }); 
}); 
+0

我已经尝试,但没有运气 –

+0

你可以发布你的一个小的HTML吗? –

0

有2种方式将事件处理程序附加到阿贾克斯加载的内容。

  1. 附上事件的Ajax请求的完成回调。 (参考:jQuery Ajax

    $.ajax({ 
        url: "xyz.php", 
    }) 
    .done(function(content) { 
        $("#cart-sidebar").on("click", '.increment_qty_'+itemId, function(event) { 
          console.log("work"); 
        }); 
    }); 
    
  2. 使用Event Delegate。这将允许您将事件监听器附加到元素,即使在将来

+0

不可能设置1个选项,因为js文件和ajax是两个不同的文件 –

+0

和第二选项不工作 –

0

只是不喜欢:

jQuery(document).ready(function(){ 
     var itemId = '<?php echo $_item->getId(); ?>'; 

     jQuery(document).on("click", '.increment_qty_'+itemId, function(event) { 
      console.log("work"); 
     }); 


}); 
+0

我已经尝试但不为我工作 –

+0

@Ajaypatel使用文档而不是$(“#cart-sidebar”)。 (“点击”,正如我在我的答案中提到的。还请提到你的动态添加html –

+0

的方式我已经尝试过所有文档,活,上,委托,但不工作,因为js加载在ajax上 –