javascript - 让 jQuery .click() 激活不止一次

标签 javascript jquery

我正在使用报价机,点击它会显示随机报价之一,它是在我的数组中找到的作者。我可以让它显示一次随机报价,但再次单击该按钮没有任何反应。

//VARIABLES
///////////////
var quotes = [
  ["Quote 1", "Author 1"],
  ["Quote 2", "Author 2"],
  ["Quote 3", "Author 3"],
  ["Quote 4", "Author 4"]
];

var randomQuote = quotes[Math.floor(Math.random() * quotes.length)];


//FUNCTIONS
///////////////
function quoteGeneration() {
  $(".quotes").replaceWith(randomQuote);
};


//QUOTE BUTTON
/////////////////
$(".quote-button").click(function() {
  quoteGeneration();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="quote-box">
  <h1>Random Quote Generator</h1>
  <p class="quotes">This is where the quotes go.</p>
  <span class="quote-authors">Quote author</span>

  <div class="social-media">
    <a href="#"><i class="fa fa-twitter"></i></a>
    <a href="#"><i class="fa fa-tumblr"></i></a>
  </div>

  <button class="quote-button">New Quote</button>
</div>

最佳答案

有两个主要问题。第一个是因为您在第一次点击时从 DOM 中删除了 .quotes 元素。使用 text() 而不是 replaceWith():

$(".quotes").text(randomQuote);

第二个是你的逻辑有缺陷,因为你只在加载页面时随机选择了一次引用。这应该在点击处理程序中完成。试试这个:

var quotes = [
  ["Quote 1", "Author 1"],
  ["Quote 2", "Author 2"],
  ["Quote 3", "Author 3"],
  ["Quote 4", "Author 4"]
];

$(".quote-button").click(function() {
  var randomQuote = quotes[Math.floor(Math.random() * quotes.length)];
  $(".quotes").text(randomQuote);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="quote-box">
  <h1>Random Quote Generator</h1>
  <p class="quotes">This is where the quotes go.</p>
  <span class="quote-authors">Quote author</span>

  <div class="social-media">
    <a href="#"><i class="fa fa-twitter"></i></a>
    <a href="#"><i class="fa fa-tumblr"></i></a>
  </div>

  <button class="quote-button">New Quote</button>
</div>

关于javascript - 让 jQuery .click() 激活不止一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229897/

相关文章:

javascript - 用于验证纬度和经度正则表达式的 jQuery

javascript - 如何调整 slider 代码以显示 2 张以上的幻灯片

javascript - 如何在单击时从 highchart 事件中的 html 元素触发 jquery 函数 onchange?

javascript - 如何在 Angular 4 中的指令元素之后创建元素

javascript - 为什么使用 require './foldername/filename' 而不是 require 'foldername/filename' ?

javascript - 使用 Github SVG 创建自定义 mat-icon

javascript - 生成的按钮触发表单提交

javascript - 单击时调用变量函数

jquery - 从 ui-filterable 中删除搜索图标?

javascript - Jquery Ajax - 不加载文本