Javascript-如果url中存在片段,则调用函数
我有一个带各种杂志的旋转木马,点击旋转木马中的每一本杂志,我会在页面上向下滚动到显示所点击杂志详细信息的部分。我传递杂志细节,并根据传递的值创建元素。 这是html:Javascript-如果url中存在片段,则调用函数,javascript,Javascript,我有一个带各种杂志的旋转木马,点击旋转木马中的每一本杂志,我会在页面上向下滚动到显示所点击杂志详细信息的部分。我传递杂志细节,并根据传递的值创建元素。 这是html: @foreach($issues as $issue) <div class="swiper-slide magazine-image"> <div class="slider-image-wrap js-magazine-s
@foreach($issues as $issue)
<div class="swiper-slide magazine-image">
<div
class="slider-image-wrap js-magazine-selector"
data-id='{{ $issue->first()->magazine->id }}'
data-name='{{ $issue->first()->magazine->name }}'
data-summary='{{ $issue->first()->magazine->summary ?: '' }}'
data-magazine-image='{{ $issue->first()->magazine->image ?: '' }}'
data-issue-image='{{ $issue->first()->image }}'
>
<img src="/imagecache/medium/{{ $issue->first()->image }}">
<div class="magazine-overlay">
<div>
<p>{{ $issue->first()->magazine->name }}</p>
<a href="#">Se magasinet</a>
</div>
</div>
</div>
</div>
@endforeach
这是创建杂志详细信息部分的功能:
$(function() {
$('.js-magazine-selector').click(function(){
var img = $(this),
id = img.data('id'),
name = img.data('name'),
summary = img.data('summary'),
magazineImage = img.data('magazine-image'),
issueImage = img.data('issue-image'),
page = img.data('page');
$('#back').addClass('not-allowed');
$('#forward').removeClass('not-allowed');
showMagazineDetail(id, name, summary, magazineImage, issueImage, page);
});
});
var showMagazineDetail = function showMagazineDetail(id, name, summary, issueImage, magazineImage, page){
images = [];
nextImage = 0;
imagesIndex = 0;
loadedImages = [];
scrollPoint = document.height;
window.location.hash = name;
$(".magazine-section").css('visibility', 'visible');
$('#name').text(name);
$('#summary').text(summary);
$('#cover-image').attr({"src" : '/imagecache/cover/' + magazineImage, "alt" : name});
if (issueImage != '') {
$('#issueImage').show();
$('#issueImage').attr({"src" : '/imagecache/medium/' + issueImage, "alt" : name});
}else {
$('#issueImage').hide();
$('#issueImage').attr({"src" : '', "alt" : name});
}
// $('body').css('overflow-y', 'scroll');
$('html,body').animate({
scrollTop: $(".magazine-detail").offset().top - 80
});
$.getJSON("issue/images",
{ id: id },
function(result){
if (result.length < 2){
$('.magazine-preview-nav').hide();
} else {
$('.magazine-preview-nav').show();
}
$.each(result, function(i, value){
images.push(value);
});
preload();
});
};
var showMagazineDetail=函数showMagazineDetail(id、名称、摘要、发布页面、magazineImage、页面){
图像=[];
nextImage=0;
imagesIndex=0;
LoadeImage=[];
scrollPoint=document.height;
window.location.hash=名称;
$(“.magazine section”).css(‘可见性’、‘可见’);
$('名称').text(名称);
$('摘要')。正文(摘要);
$('#cover image').attr({“src”:'/imagecache/cover/'+magazineImage,“alt”:name});
如果(issueImage!=''){
$('#issueImage').show();
$('#issueImage').attr({“src”:'/imagecache/medium/'+issueImage,“alt”:name});
}否则{
$('#issueImage').hide();
$('#issueImage').attr({“src”:“”,“alt”:name});
}
//$('body').css('overflow-y','scroll');
$('html,body')。设置动画({
scrollTop:$(“.magazine detail”).offset().top-80
});
$.getJSON(“问题/图像”,
{id:id},
功能(结果){
如果(结果长度<2){
$('.magazine preview nav').hide();
}否则{
$('.magazine preview nav').show();
}
$。每个(结果、函数(i、值){
图像。推送(值);
});
预加载();
});
};
这很好,但我需要添加一个功能,当用户传递带有杂志名称散列片段的url时,它将调用与在旋转木马中单击杂志时相同的函数。我只是不知道如何传递创建杂志详细信息部分所需的其他参数,因此我考虑创建一个函数,如果页面加载上有一个哈希片段,则在旋转木马中查找与哈希片段中同名的元素,然后在其上执行单击函数,但不知道如何做,如果这是最好的方法?您可以这样做,在函数准备就绪时,获取散列,选择一个元素,然后像您所说的那样调用函数:
$(document).ready(function () {
var name = window.location.hash.substr(1);
if (name != '') {
var selectedMagazine = $('[data-name="' + name + '"]'),
id = selectedMagazine.data('id'),
name = selectedMagazine.data('name'),
summary = selectedMagazine.data('summary'),
magazineImage = selectedMagazine.data('magazine-image'),
issueImage = selectedMagazine.data('issue-image'),
page = selectedMagazine.data('page');
showMagazineDetail(id, slug, name, summary, magazineImage, issueImage, page);
}
});
如果有更有效的方法,我不确定,但这会满足你的要求