2016-08-24 77 views
3

我使用WordPress和我的内容是这样的添加键盘上的箭头导航自定义JS

<div class="image-wrap"><a class="ajax-load-next" href="http://linktopage.com/2/"><img src="blah1.jpg" alt=""/></a></div><!--nextpage--> 
<div class="image-wrap"><a class="ajax-load-next" href="http://linktopage.com/3/"><img src="blahab.jpg" alt=""/></a></div><!--nextpage--> 
<div class="image-wrap"><a class="ajax-load-next" href="http://linktopage.com/4/"><img src="blahco.jpg" alt=""/></a></div><!--nextpage--> 
<div class="image-wrap"><a class="ajax-load-next" href="http://linktopage.com/5/"><img src="blahneat.jpg" alt=""/></a></div> 

我有当用户点击了图片加载下一个图像的自定义JavaScript。现在我想将左边的&右键盘箭头导航添加到这个脚本中,我不知道如何实现它,因为我不熟悉JavaScript。

$('body').on('click', '.image-wrap', function(e) { // listen for 'click' on our '.image-wrap' element 
    e.preventDefault(); // Prevents default behavior on the a element 

    $.ajax({ 

    url: $(this).find('a').attr('href'), // the url we are fetching by ajax 
    success: function (response) { 

     newImg = $(response).find('.image-wrap').html(), // get the new href link and image from the response, contained in div.image-wrap 

     $('div.image-wrap').html(newImg); // set the new html for our inner div 

    } 
    }).fail(function (data) { 

    if (window.console && window.console.log) { 

     console.log(data); // log failure to console 

    } 

    }); 

}); 

编辑: 按下右箭头键我希望它点击AJAX链接,里面像包装的div应加载下一个图像。如果按下左箭头键,它应该返回到前一个图像。任何想法如何做到这一点?

+0

还不清楚。箭头键应该操作哪个图像包装div?你有四个。 –

+0

在wordpress上,它会在页面上只显示一个图像 - 包装div,导致<! - nextpage - >标签将这些div分成多个页面。因此,箭头键应该专注于页面上的一个图像换行div – TravelWhere

回答

1

您可以使用捕鼠器。

function GoToLocation(url) 
 
    { 
 
    window.location = url; 
 
    } 
 
    Mousetrap.bind("right", function() { 
 
document.getElementById('next-image').click(); 
 
    });
<script src="https://craig.global.ssl.fastly.net/js/rainbow-custom.min.js?39e99"></script> 
 
<script src="https://craig.global.ssl.fastly.net/js/mousetrap/mousetrap.js?bc893"></script> 
 

 
<div class="image-wrap"><a id="next-image" class="ajax-load-next" href="http://linktopage.com/2/"><img src="blah1.jpg" alt=""/></a></div><!--nextpage--> 
 
<div class="image-wrap"><a id="next-image" class="ajax-load-next" href="http://linktopage.com/3/"><img src="blahab.jpg" alt=""/></a></div><!--nextpage--> 
 
<div class="image-wrap"><a id="next-image" class="ajax-load-next" href="http://linktopage.com/4/"><img src="blahco.jpg" alt=""/></a></div><!--nextpage--> 
 
<div class="image-wrap"><a id="next-image" class="ajax-load-next" href="http://linktopage.com/5/"><img src="blahneat.jpg" alt=""/></a></div>

,如果你是使用attachment.php或image.php基于画廊。你也可以用这个:Wordpress Attachment Page Navigate with Keyboard

+0

左箭头键怎么样?我想回去一页/图片 – TravelWhere

+0

你能告诉我一个例子页吗?所以我可以写任何关于这个的东西。 – ceylankral

+0

这里的例子http://www.sailormoon.xyz/chapters/amis-first-love/ – TravelWhere

0

您需要将处理程序绑定到文档keyup事件,并测试事件的关键代码。一个方便的参考钥匙代码:https://css-tricks.com/snippets/javascript/javascript-keycodes/

下面是一个例子。运行它时,在测试密钥之前,请单击输出面板以使其焦点集中。

var selectedIndex = 0; 
 

 
var elements = $('.navigable').toArray(); 
 
var maxElements = elements.length; 
 

 
function nextSelection() { 
 
    selectedIndex++; 
 
    if(selectedIndex >= maxElements) { 
 
    selectedIndex = 0; 
 
    } 
 
    selectElement(); 
 
} 
 

 
function prevSelection() { 
 
    selectedIndex--; 
 
    if(selectedIndex < 0) { 
 
    selectedIndex = maxElements - 1; 
 
    } 
 
    selectElement(); 
 
} 
 

 
function selectElement() { 
 
    $('.navigable').removeClass('selected'); 
 
    $(elements[selectedIndex]).addClass('selected'); 
 
} 
 

 
handleKeyUp = function(ev) { 
 
    if(ev.keyCode == 37) { // left arrow key 
 
    prevSelection(); 
 
    } 
 
    if(ev.keyCode == 39) { // right arrow key 
 
    nextSelection(); 
 
    } 
 
    if(ev.keyCode == 27) { // escape key 
 
    $(document).off('keyup', handleKeyUp); 
 
    } 
 
} 
 

 
$(document).on('keyup', handleKeyUp); 
 
selectElement();
div { 
 
    padding: 30px; 
 
    margin: 10px; 
 
    border: 1px solid #aaa; 
 
    background: #fee; 
 
    display: inline-block; 
 
} 
 

 
div.selected { 
 
    background: #faa; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="navigable">1</div> 
 
<div class="navigable">2</div> 
 
<div class="navigable">3</div> 
 
<br> 
 
<br> 
 
<p> Click in this panel to give it focus. Use arrow keys to navigate between divs. Press `ESC` to disable `keyup` handler.</p>

+0

您的脚本似乎只选择div,但我想要箭头键单击图像链接或返回上一图像链接。我怎样才能做到这一点? – TravelWhere

+0

你想要做哪些箭头键?你说你想要箭头键导航。我的答案显示了如何使用一个通用示例来处理keyup事件。你如何选择处理keyup事件,取决于你想要做什么,哪些不清楚。请在你的问题中描述一个完整的场景,详细说明当用户点击你的ajax链接之前和之后按下给定的箭头键时会发生什么。 –

+0

我已经更新了我的第一篇文章,详细一点 – TravelWhere