从jQuery Cycle插件幻灯片中删除元素会破坏它

时间:2011-11-14 22:07:50

标签: javascript jquery jquery-cycle

我有一系列是/否问题,我使用Cycle插件一次显示一个。

问题位于<ul>元素中。

当问题得到解答时,AJAX请求会显示使用php脚本对该问题回答是或否的人的比例,并且问题将从<ul>中删除。

这就是问题所在。

The author of the cycle plugin himself说有必要停止并重新启动幻灯片以移除幻灯片。

当我尝试通过调用$element.cycle('destroy')$element.cycle('stop')来执行此操作时,删除元素,然后使用$element.cycle()重新启动,循环不会按预期继续。只发生一次转换,然后幻灯片停止。

这是我的JS:

$j = jQuery.noConflict(); 

$j(document).ready(function() {

  var $questions = $j('#questions');

  $questions.cycle();

  $j('#survey input').click(function(e) {
    e.preventDefault();
    question = parseInt($j(this).attr('name'));
    answer = $j(this).attr('value');

    $j.post( 'process.php', {
      question: question,
      answer: answer
    }, function(data) {
      $j('#result p').replaceWith('<p>' + data + '</p>');
    });

    $questions.cycle('destroy');
    $j(this).closest('.question').remove();
    $questions.cycle();

  });

});

这是我的HTML:

<ul id="questions">

    <li class="question">
      <h3>do you like to stay at home?</h3>
      <form id = "survey" action="process.php" method="post">
        <input type="submit" name = "2" value = "yes" >
        <input type="submit" name = "2" value = "no" >
      </form>
    </li>

  <!-- four or five more questions here -->

  </ul>
  <div id="result"><p></p></div>

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

经过多次摆弄(双关语)后,看起来$。('destroy')函数没有正确清除导致问题的内部状态;无论是否删除任何幻灯片,问题仍然存在。

我在这里创建了一个解决方法:http://jsfiddle.net/eF72L/2/

我希望这有帮助!