动态地将值传递给.click事件Jquery

flvlnr44  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(157)

我正在使用Jquery获取CSS类的值。当我单击标题时,我希望所有的单选框都标记为选中。我循环并找到这些值,使用console.log检查我是否返回了正确的值。然而,当我尝试使用该函数时,它只会在数组中的第一个元素上正确运行,我希望它应用于循环中找到的所有名称。

var skil = $('.Routes');
var skills = new Array();
skil.each(function(i) {
  skills.push($(this).text());
  var Route = '#'+skills[i].replaceAll(' ','');
  console.log(Route);
   $(Route).on('click', function() {
    $(Route).prop("checked", true); //This only performs the function on the First value (in this case for "Purchased")
   });
});

下面是在两个头上正确运行的代码摘录。我可以复制它,但有17个类,所以理想情况下,我希望动态地传递值,并在可能的情况下运行一个函数。

$('#Purchased').on('click', function() {
    $('.Purchased').prop("checked", true);
});

$('#BST').on('click', function() {
    $('BST').prop("checked", true);
});

参见下面的HTML构建表

<th class="rotate"><div><span class ="Routes" id ="Purchased"> Purchased</span></div></th>
    <th class="rotate"><div><span class ="Routes" id ="BST> BST</span></div></th>

<td bgcolor="#8DB255" class=""> <input type="radio" class="get_value Purchased" name="48215:4G1" id="r8215:4201" value="4:716:597:18.25:200:0:200:NA:PBJB_18223_JTC:375:8215:4:20:2023/09/13:284:284:284:284:284:0::0" checked=""></td>
    <td bgcolor="#8DB255" class=""> <input type="radio" class="get_value BST" name="48215:4G1" id="r8215:4201" value="4:716:597:18.25:200:0:200:NA:PBJB_18223_JTC:375:8215:4:20:2023/09/13:284:284:284:284:284:0::0" checked=""></td>
djmepvbi

djmepvbi1#

我建议你使用Jquery在标题上添加一个click处理程序,然后使用标题文本来分配每个表行单选按钮的属性。请看fiddle:https://jsfiddle.net/martlark/hsfrvj90/6/

$('.Routes').on('click', function(e) {
  const radioClass=e.target.innerText.replace(' ', '_');
  $(`.${radioClass}`).prop("checked", true); 
});
rt4zxlrg

rt4zxlrg2#

问题在于名称不匹配。span元素的ID是Angle_Plant
你的html说

<th class="rotate"><div><span class ="Routes" id ="Angle_Plant"> Angle Plant</span></div></th>

因此,这个var Route = '#'+skills[i].replaceAll(' ','');的结果将给予AnglePlant
现在,您可以看到AnglePlant(您在下一行$(Route).on('click', function() {中用作选择器)与HTML元素的ID Angle_Plant不匹配
这就是它不起作用的根本原因。
最好的办法是将html元素的ID重命名为AnglePlant

<th class="rotate"><div><span class ="Routes" id ="AnglePlant"> Angle Plant</span></div></th>

相关问题