我在此页面上有一堆按选项卡排序的投资组合项目。 Link to the site 。该网站是用 Joomla 2.5 构建的,我有一个组件负责显示每个投资组合项目。 我需要做的是加载每个相应的投资组合项目,而不重新加载页面。所以基本上这里是具有 AJAX 调用的 javascript 函数
function ajax_portfolio($pid) {
var url = 'index.php?option=com_jms_portfolio&task=item.ajax_load_portfolio&tmpl=component&id=' + $pid;
alert(url);
var x = new Request({
url: url,
method: 'post',
evalScripts: true,
evalResponse: true,
onSuccess: function(responseText){
document.getElementById('ja-content-main').innerHTML = responseText;
aaa();
}
}).send();}
问题实际上不是AJAX调用原因和标签的点击事件,这个事件没有问题。问题是在每次 ajax 调用后触发 javascript 函数 aaaa() 。抱歉,如果我不清楚,问题是在每次 ajax 调用后触发函数 aaa(),该函数为每个投资组合项目创建 slider 。
最佳答案
删除现有的href
<a>
的属性包裹图像的标签。然后,添加 click
通过 javascript 处理程序到每个 <a>
给他们一个独特的ID后标记。这将导致在单击图像时调用 ajax,而不是重定向到新页面。
至于调用aaa
函数,我认为问题是范围,因为您还没有发布该方法。给予aaa
正确的范围,您可以将额外的参数传递给 ajax_portfolio 来完成此操作。
一个JQuery示例如下。
<a port_id="56"><img>...</img></a>
$(document).ready(function() {
$("a").click(function() {
ajax_portfolio($(this).attr("port_id"), $(this));
});
});
// Add the $elem parameter here to track which element called this method.
function ajax_portfolio($pid, $elem) {
var url = ...;
var x = new Request({
url: url,
method: 'post',
evalScripts: true,
evalResponse: true,
onSuccess: function(responseText){
document.getElementById('ja-content-main').innerHTML = responseText;
// Pass the element that was clicked on to the aaa function.
aaa($elem);
}
}).send();}
关于javascript - 使用 AJAX 加载投资组合项目,无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451100/