触发事件

时间:2014-12-03 11:10:22

标签: javascript jquery html html5 google-chrome

我有一个目标网站,其中有以下下拉菜单。

<select class="categories-options" data-level="1" name="level1-option" id="level1-option" required="">
  <option value="">default</option>
  <option value="p1" data-href="/callback/p1">P1</option>
  <option value="p2" data-href="/callback/p2">P2</option>
  <option value="p3" data-href="/callback/p3">P3</option>
</select>

当从菜单中选择一个项目时,它会触发&#34;更改&#34;事件发生时调用事件和函数。我已经使用Chrome调试了这个事件,当我从下拉菜单中选择一个项目时,您可以看到调试输出。我从调试器中截取了截图。

现在,让我解释一下我要做的事情。我使用javascript函数从下拉菜单中选择一个项目,使用以下代码:

var id= document.getElementById('level1-option');
setSelectedValue(id, "p2");
$('#level1-option').trigger("select");   

在最后一行中,我尝试触发最初在网页中发生的同一事件,就像我手动选择了该项一样。但是,它并没有触发任何东西。 |我在调试输出中看到该事件是由类触发的。我尝试过很多不同的东西但是没有用。有人能解释一下这个问题吗?如何使用jquery或javascript触发该网页中发生的同一事件?

Chrome debugger output

2 个答案:

答案 0 :(得分:2)

您的代码:

$('#level1-option').trigger("select");

...将触发名为select的事件(与表单字段更改的值无关),但您在调试器中停止的事件是change,而不是{ {1}}:

enter image description here

如果您想触发select事件,请触发change事件:

change

旁注:因为您使用的是jQuery,所以您的代码可以更简单,您不需要$('#level1-option').trigger("change"); // Difference is here -------^ getElementById

setSelectedValue

答案 1 :(得分:1)

试试这个

$('#level1-option').trigger("change");