Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-如果url中存在片段,则调用函数_Javascript - Fatal编程技术网

Javascript-如果url中存在片段,则调用函数

Javascript-如果url中存在片段,则调用函数,javascript,Javascript,我有一个带各种杂志的旋转木马,点击旋转木马中的每一本杂志,我会在页面上向下滚动到显示所点击杂志详细信息的部分。我传递杂志细节,并根据传递的值创建元素。 这是html: @foreach($issues as $issue) <div class="swiper-slide magazine-image"> <div class="slider-image-wrap js-magazine-s

我有一个带各种杂志的旋转木马,点击旋转木马中的每一本杂志,我会在页面上向下滚动到显示所点击杂志详细信息的部分。我传递杂志细节,并根据传递的值创建元素。 这是html:

        @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);
  }
});
如果有更有效的方法,我不确定,但这会满足你的要求