使用Ajax加载视图组件时,视图组件JavaScript代码不工作
我使用了具有一些动画的JavaScript代码的视图组件。 加载页面时的JavaScript运行良好,但是单击按钮将数据加载到Ajax时, 正确加载的数据,但JavaScript代码不再起作用
//
public async Task<IViewComponentResult> InvokeAsync(GalleryInvokeParameterViewModel par)
{
var gallery = await _productService.GetGalleriesForSingleProductAsync(par.ProductID,par.ColorID);
ViewBag.mainImage = await _productService.GetMainImageGalleryForSingleProductAsync(par.ProductID, par.ColorID);
ViewBag.productId = par.ProductID;
return View("SingleProductGallery",gallery);
}
在controller //中in Controller
public IActionResult ChangeGallery(int id, int colorId)
{
var parameters = new GalleryInvokeParameterViewModel
{
ColorID = colorId,
ProductID = id
};
return ViewComponent("SingleProductGallery", parameters);
}
//在javascript代码中in javascript代码缩放图像中的缩放图像 //这些代码在调用Ajax加载数据后不起作用
var zoomArea = document.getElementById("zoom-area");
var zoomImage = document.getElementById("zoom-image");
zoomArea.addEventListener("mousemove", function (event) {
var clientX = event.clientX - zoomArea.offsetLeft;
var clientY = event.clientY - zoomArea.offsetTop;
var aWidth = zoomArea.offsetWidth;
var aHeight = zoomArea.offsetHeight;
clientX = (clientX / aWidth) * 100;
clientY = (clientY / aHeight) * 100;
zoomImage.style.transform =
"translate(-" + clientX + "% , -" + clientY + "%) scale(1.5)";
});
$(zoomArea).mouseleave(function () {
zoomImage.style.transform = "translate(-50% , -50%) scale(1)";
});
i used a view Component that has some javaScript codes for animations.
when page loaded javaScript works well but when click a button to load data with ajax,
data loaded correctly but javaScript codes doesn't work any more
// in view component code
public async Task<IViewComponentResult> InvokeAsync(GalleryInvokeParameterViewModel par)
{
var gallery = await _productService.GetGalleriesForSingleProductAsync(par.ProductID,par.ColorID);
ViewBag.mainImage = await _productService.GetMainImageGalleryForSingleProductAsync(par.ProductID, par.ColorID);
ViewBag.productId = par.ProductID;
return View("SingleProductGallery",gallery);
}
// in controller
public IActionResult ChangeGallery(int id, int colorId)
{
var parameters = new GalleryInvokeParameterViewModel
{
ColorID = colorId,
ProductID = id
};
return ViewComponent("SingleProductGallery", parameters);
}
// in javascript codes for ZOOM image ON HOVER IMAGE
// these codes doesn't work after calling ajax to load data
var zoomArea = document.getElementById("zoom-area");
var zoomImage = document.getElementById("zoom-image");
zoomArea.addEventListener("mousemove", function (event) {
var clientX = event.clientX - zoomArea.offsetLeft;
var clientY = event.clientY - zoomArea.offsetTop;
var aWidth = zoomArea.offsetWidth;
var aHeight = zoomArea.offsetHeight;
clientX = (clientX / aWidth) * 100;
clientY = (clientY / aHeight) * 100;
zoomImage.style.transform =
"translate(-" + clientX + "% , -" + clientY + "%) scale(1.5)";
});
$(zoomArea).mouseleave(function () {
zoomImage.style.transform = "translate(-50% , -50%) scale(1)";
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了这个问题的解决方案。
AJAX打电话和返回数据后,我致电:
它再次重新加载JavaScript代码,我的动画代码效果很好。
i found a solution for this issue.
after ajax called and returned data i call :
and it reloaded javaScript codes again and my animations code works well.