我在过去的两个小时里一直在研究,但无法让它发挥作用。
我通过ajax和$(this)加载内容.data对我来说根本不起作用。如果我将这个更改为实际的类,那么内容会加载,但这是一个投资组合,因此每个按钮都有一个不同的URL来加载。
HTML:
<a class="button" href="#project-full" data-work-item="portfolio-open.html">View Project</a>
JS:
var loadUrl = $(this).data('work-item');
$(".button").click(function(){
$("#project-full").html(ajax_load).load(loadUrl);
$("html, body").animate({ scrollTop: $('#project-full').offset(0,100).top }, 1000);
});
理论上,变量loadUrl不应该抓住“portfolio-open.html”并将其传递给下面的loadUrl吗?我确信我遗漏了一些重要的东西,但是从我读过的所有来源应该工作..
答案 0 :(得分:4)
您需要将loadUrl
定义放在click事件处理程序中,因为$(this)
应引用您点击的锚元素:
$(".button").click(function(e) {
e.preventDefault(); // stop the default anchor action
var loadUrl = $(this).data('work-item');
$("#project-full").html(ajax_load).load(loadUrl);
$("html, body").animate({ scrollTop: $('#project-full').offset(0,100).top }, 1000);
});
不要忘记阻止默认的锚定操作(重定向)。
答案 1 :(得分:0)
以下是您的代码:
$(".button").click(function(e){
e.preventDefault();
var loadUrl = $(this).data('work-item');
$(this.href).load(loadUrl);
//$("html, body").animate({ scrollTop: $('#project-full').offset(0,100).top }, 1000);
});