protectDefault () и возврат false;не работает на некоторых элементах jCarousellite <a> - PullRequest
0 голосов
/ 23 марта 2011

У меня странный и разочаровывающий сценарий, и я не могу отследить его происхождение.

На странице jCarousellite прокручивается количество <li> элементов. Список генерируется из запроса и затем выводится на страницу с помощью цикла. Внутри элементов списка все обернуто в тег <a></a>.

Карусель работает так, как должна. На данный момент у меня есть только 2 элемента, возвращенные с запросом, и они без проблем прокручиваются мимо.

Странно, когда первый элемент в списке циклически возвращается назад, он игнорирует preventDefault() или return false и переходит на страницу в href. Еще более странно, это происходит только при первом нажатии. Когда вы нажимаете кнопку «Назад» и возвращаетесь на страницу, а затем нажимаете ее снова, она действует, как и ожидалось, ничего не происходит, пока, конечно, она не перевернется заново.

Где призрак в этой машине? Я не получаю никаких ошибок в firebug ...

Вот код ...

<div id="scroller">
    <div class="slideshow">
      <ul>
        <cfloop query="qScrollers">
          <li>
            <cfset ref = "product.cfm?pid=" & #qScrollers.link#>
            <cfoutput><a href="#ref#" class="specials" title="#qScrollers.title#" ></cfoutput>
            <p><cfoutput>#qScrollers.line1#</cfoutput></p>
            <h1><cfoutput>#qScrollers.line2#</cfoutput></h1>
            <p><cfoutput>#qScrollers.line3#</cfoutput></p>
            <h2><cfoutput>#qScrollers.line4#</cfoutput></h2>
            </a> </li>
        </cfloop>
      </ul>
    </div>
  </div>

И вот код, который живет внутри моей $(document).ready() функции

    $('.slideshow ul li a').click(function(e){
        e.preventDefault();
    });

//I've tried this too...//
/*$('.slideshow ul li a').click(function(){
return false;
    });*/

$(function() {  
        $(".slideshow").jCarouselLite({  
            vertical: false,  
            visible: 1,  
            auto:2500,  
            speed:400,
            hoverPause:true
        });  
    });

1 Ответ

1 голос
/ 23 марта 2011

@ Ofeargall: Попробуйте -

$(function() {  
    $(".slideshow").jCarouselLite({  
        vertical: false,  
        visible: 1,  
        auto:2500,  
        speed:400,
        hoverPause:true
    }); 

    $('a.specials').click(function(e) {
        e.preventDefault();
    });
});
...