2013-04-29 2 views
1

Как я могу сказать, что если это сенсорное устройство, не наведите курсор и не нажмете прямо?
Вот пример игры: http://jsfiddle.net/2Sax4/4/JQuery Перейти к этому href

Ключевым моментом является то, как сказать, чтобы получить href. Что-то вроде этого:

window.location= 'http://' + this a; 

JQuery:

$(function(){ 

    // not touch:  
    $(".menu li").hover(function() { 
     $(this).animate({ "background-color":red }, 1000); 
    },function() { 
     $(this).animate({ "background-color":blue }, 1000); 
    }); 

    // touch: 
    var supportsTouch = 'ontouchstart' in window || 'onmsgesturechange' in window; 
    if(supportsTouch) { 
     $(this).on('touchstart', function(){ 
        //I tried something like this 
      window.location= 'http://' + this a; 
     }); 

    } 
}) 

HTML:

<ul class="menu"> 
    <li id="first"><a href="first.html">first</a></li> 
    <li id="second"><a href="second.html">second</a></li> 
</ul> 
+0

У меня была существенная ошибка в вопросе и скрипкой. У меня было: $ (this) .hover (функция() и я обновляю до: $ (". Menu li"). Hover (function() – Nrc

+0

Эффект «не касания» не оценен в скрипке. Я думаю, что jquery ui не может загрузить его, или я не могу его найти. – Nrc

ответ

1

что $ (это) в этом случае? в целом, вы могли бы сделать:

window.location.href = $(this).attr('href'); Предполагая, что $ (это) является <a>.

2

Попробуйте

window.location= $("a", this).attr("href"); 

Конечно, это будет работать, если this относится к li, который я думаю, из вашего кода, это делает.

+0

Я думаю, вы имеете в виду '$ (« a », this)' вместо этого. –

+0

Исправлено. Спасибо, что указали это. – Achrome

+0

Я не знаю, хотя если бы браузер быть в состоянии перенаправить на нужную страницу, если вы назначили, например, 'http: // first.html' (именно это вы делаете сейчас). –

3
window.location.href = location.protocol + '//' + location.host + '/' + $('a', this).prop('href'); 

если вы не знаете протокол или хост (имя хоста + порт).

+0

Я думаю, вы имеете в виду '$ ('a', this)' вместо этого, и использование этого свойства не будет работать в этом случае. –

+0

@Felix: я сделал изменение –

0

Есть два шага:

  1. Получить ссылку на a элемента.
  2. Назначьте правильный URL-адрес window.location.href.

Чтобы получить ссылку на ссылку, вы просто должны найти его в потомках элемента:

var link = $(this).find('a'); // or $(this).children('a'); 

Теперь, в то время как href HTML атрибут содержит только часть URL (имя файла) , соответствующее свойство DOM содержит код URL (схема, хост, путь и т. д.), исходя из текущего URL-адреса страницы.
Таким образом, мы можем просто взять и присвоить его window.location/href:

window.location.href = link.prop('href'); 
Смежные вопросы