如何使用jQuery检查选择/单击的元素是不是是“n”的倍数?

Posted

技术标签:

【中文标题】如何使用jQuery检查选择/单击的元素是不是是“n”的倍数?【英文标题】:How to check if the element selected/clicked is multiple of "n" using jQuery?如何使用jQuery检查选择/单击的元素是否是“n”的倍数? 【发布时间】:2018-05-11 21:03:35 【问题描述】:

ul 中有“n”个 li 元素。我只想在li selected/clicked 是“n”的倍数时才提醒消息(让它为 3)。

在下面的例子中,只有当我点击第 3、6 和 9 个li 元素时才会显示警报:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
  <li>list item 7</li>
  <li>list item 8</li>
  <li>list item 9</li>
</ul>

【问题讨论】:

你的问题是:“alert must be shown only when I click the 3rd, 6th and 9th li,”你的意思是“and ”还是您的意思是“”? 【参考方案1】:

在这里,我们也可以使用nth-child

$('ul').find('li:nth-child(3n)').click(function()
  console.log($(this).text());
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
  <li>list item 7</li>
  <li>list item 8</li>
  <li>list item 9</li>
</ul>

【讨论】:

【参考方案2】:

你可以使用:nth-of-type()选择器

$('li:nth-of-type(3n)').click(function() 
  console.log('Alert here')
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
  <li>list item 7</li>
  <li>list item 8</li>
  <li>list item 9</li>
</ul>

【讨论】:

【参考方案3】:

您可以在index() 的帮助下使用模% 来获取点击的li 的索引。

我们应该添加1,因为索引是从零开始的:

if (($(this).index() + 1) % n == 0) 
    //Your logique here

片段:

var n = $('ul>li').length;

$('li').click(function() 
  var currentIndex = $(this).index();

  if ( (currentIndex + 1) % n == 0) 
  
    console.log('Alert here')
  
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
  <li>list item 7</li>
  <li>list item 8</li>
  <li>list item 9</li>
</ul>

【讨论】:

count变量有什么用? 可以通过简单的:nth-child()或者:nth-of-type()选择器来实现【参考方案4】:

你可以试试这个:

var number = 3;
$("ul li").click(function()
  var i = $(this).index() + 1
  if(i % number == 0) 
    console.log("You clicked on either element 3,6 or 9")
  
)

演示

var number = 3;
$("ul li").click(function()
  var i = $(this).index() + 1
  if(i % number == 0) 
    console.log("You clicked on either element 3,6 or 9")
  
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
    <li>list item 1</li>
    <li>list item 2</li>
    <li>list item 3</li>
    <li>list item 4</li>
    <li>list item 5</li>
    <li>list item 6</li>
    <li>list item 7</li>
    <li>list item 8</li>
    <li>list item 9</li>
</ul>

或者您可以使用$(ul li:nth-child(3n)).click(),它将占用每个第三个元素。

【讨论】:

【参考方案5】:

使用 jQuery index()

更新:直接运行此代码应满足您的要求。在本例中 N=3。

这里是jsfiddle。

$(document).ready(function()
  var N = 3;
  $("ul li").click(function()
    var index = $(this).index() + 1;
    if(index%N == 0) 
      alert("Is a multiple of "+N);
     else 
      alert("Is not a multiple of "+N);
    
  );
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
  <li>list item 7</li>
  <li>list item 8</li>
  <li>list item 9</li>
</ul>

【讨论】:

以上是关于如何使用jQuery检查选择/单击的元素是不是是“n”的倍数?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查元素是不是可见并使用 JQuery 检查 URL 是不是包含字符串?

如何在单击时选择悬停元素而不是悬停元素?

如何检查 jQuery datepicker 是不是为空?

如何检查用户是不是可以看到并单击元素?

如何检查元素是不是隐藏在 jQuery 中?

如何检查元素是不是隐藏在 jQuery 中?