JQuery / JS函数未在<a>

时间:2017-05-01 15:49:03

标签: javascript jquery html anchor

I have five slide shows on one page and I want to be able to cycle through all of them. The slideshow is made of an UL with each a different ID, so I want to create two functions for the arrows to cycle through the slides. And I want to pass the slide ID. My code:

$(document).ready(function() {
  var slides = document.querySelectorAll('#slides li');
  var slidesTotal = $('#slides li').length;
  var currentSlide = 1;

  function nextSlide() {
    //$('a.nextSlideArrow').click(function() {
        $('#slides .slide' + currentSlide).hide();
        currentSlide++;
        if(currentSlide > slidesTotal) {
          currentSlide = 1;
        }
        $('#slides .slide' + currentSlide).show();
        //return false;
    //});
  }

  function previousSlide() {
    //$('a.previousSlideArrow').click(function() {
      $('#slides .slide' + currentSlide).hide();
      currentSlide--;
      if(currentSlide == 0) {
        currentSlide = slidesTotal;
      }
      $('#slides .slide' + currentSlide).show();
      //return false;
    //});
  }
});

<div id="slider-container">

      <ul id="slides">
        <?php
          for ($i = 1; $i <= $amountImagesSlideshow[3]; $i++) {
            echo '<li class="slide'.$i.'"><img src="'.$directories[3],$i.'.jpg" /></li>';
          }
        ?>
      </ul>

      <div class="galleryPreviewArrows">
         <a href="javascript: previousSlide()" class="previousSlideArrow">&#10094;</a>
         <a href="javascript: nextSlide()" class="nextSlideArrow">&#10095;</a>
      </div>

    </div>

Now the funny thing is, if I remove the comments where the click is on the jQuery object and comment out the function, it will work. But not this way? I don't understand.

5 个答案:

答案 0 :(得分:1)

onclick事件与href属性的功能有所不同。

当你这样写:

<a href="javascript: previousSlide()" class="previousSlideArrow">&#10094;</a>

这意味着,只要单击此锚标记,您就会过度引用(尝试重定向)到某个位置。 这并不意味着您只进行点击操作。这意味着,您正在进行点击+重定向。 href =点击+重定向。

然而,您的需求只是单击事件处理。因此,您如何通过jquery进行处理。

$('a').on("click",function(){
----
----
})

这样可以正常工作。

答案 1 :(得分:0)

您不应该使用href来尝试访问javascript函数。该属性用于导航目的。此外,绑定到jquery click甚至是处理事件的更好方法,因此您坚持分离关注点设计模式。

如果需要将函数调用放在属性装饰器中,请改用onclick属性,不要通过添加括号来评估函数,只需引用它。

<a onclick="previousSlide" class="previousSlideArrow">&#10094;</a>

答案 2 :(得分:0)

锚标记 用于需要Href属性的导航。您不应该使用href进行事件处理。代替:

<div class="galleryPreviewArrows">
         <a href="" onclick="previousSlide()" class="previousSlideArrow">&#10094;</a>
         <a href="" onclick="nextSlide()" class="nextSlideArrow">&#10095;</a>
      </div>

答案 3 :(得分:0)

试试这个,

any

答案 4 :(得分:0)

很奇怪..但写作函数dtype=object有效。看起来应该在interval_list = get_intervals() interval_array = np.ndarray(len(interval_list), dtype=object) for i, interv in enumerate(interval_list): interval_array[i] = interv 准备好之前定义该函数。 这可能是共鸣outside document.ready始终有效......它是一个内置函数。

这也不是绑定事件列表器的推荐方法。使用jquery document添加/删除列表器。

&#13;
&#13;
alert
&#13;
on/off
&#13;
&#13;
&#13;