首页 > 解决方案 > Trigger() 或 Change() 或 Click() 问题来定位那些具有您想要的特定值的按钮

问题描述

根据我从 StackOverflow 上的人那里看到的情况,这些函数似乎只针对具有特定 Id 或 Class 的特定元素,例如 ID 为 first 的按钮触发 ID 为 second 的按钮,而无需实际触摸第二个按钮。但我正在寻找一个做同样事情但通过 Val 而不是 id 或 class 因为我有多个按钮具有相同的类但有自己的价值。这是我的一段代码

$('<center class=\'centers\'><button class=\'command_button buttons\' value=\'Intro2/2\'>Next</button></center>').appendTo('#choicebox');

这是触发事件的按钮,它有一类按钮,但值为 Intro2/2

$(document).on('click', '.buttons', function() {

    var button = $(this).val();
    console.log('The Button is ' + button);
    CL();
    $('#container').scrollTop($('#container')[0].scrollHeight);

    switch (button) {

      // Go from Introduction 1/2 to Introduction 2/2.
    case 'Intro2/2': {

      clean();
      
      CCEvents('Intro2/2');

    } break;

如您所见,有一个 .on 函数可以查找任何具有 .buttons 类的元素的单击事件,一旦找到,它将获取该按钮的值并将其添加到按钮的变量中,然后使用它变量以在 switch/cases 中找到一个并将其与 Intro2/2 匹配,这将触发我想要的事件函数,即 CCEvents('Intro2/2')。

所有这一切都已经完成,但我正在尝试将其添加到我的地图系统中,但需要一些方法来触发按钮而不实际单击按钮或直接触发 CCEvents('Intro2/2')

这是我尝试使用触发器和单击,也许我不明白它是如何工作的,以及为什么当它可以使用这些功能时它不工作。

$("<button class=\'command_button buttons\' value=\'Intro2/2\'>Next</button>").trigger("click");

$(".buttons").val("Intro2/2").change();

$('.buttons').trigger('Intro2/2');

$(".buttons").val("Intro2/2").click();

$(".buttons").trigger("click", "Intro2/2");

标签: javascriptjquery

解决方案


您可以使用属性选择器,例如$('.buttons[value="Intro2/2"]').click()

$('<center class=\'centers\'><button class=\'command_button buttons\' value=\'Intro2/2\'>Next</button></center>').appendTo('#choicebox');

$(document).on('click', '.buttons', function() {
  var button = $(this).val();
  console.log('The Button is ' + button);
})


$('.buttons[value="Intro2/2"]').click()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="choicebox"></div>


推荐阅读