jQuery触发事件在标记中声明了其他数据

时间:2018-11-08 21:24:31

标签: jquery onchange eventtrigger

我有一个带有更改事件处理程序的选择:

<select id="mySelect" onchange="changedMySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1);
}

我希望能够通过附加参数(myParam1,myParam2)触发此事件(以HTML声明)。

$("#mySelect").trigger("change", myParamValue1, myParamValue2);

但是myParam1是未定义的,就像用户单击时一样(这是预期的)。如何发送myParamValue1?

理想情况下,我不应该将HTML中声明的onchange移至Javascript(已确认可以正常工作)。我们需要在HTML中保留onchange,但如有必要,我们可以对其进行修改。

1 个答案:

答案 0 :(得分:0)

使用onchange="something"属性时,被调用的函数将只接收您在该属性中输入的内容。它不会获得事件或其他任何信息。因此,放置onchange="changedMySelect(1, 2)"将使用参数12来调用changedMySelect函数。

为了使其能够接收事件和其他参数,您将改为通过javascript处理事件。另外,jQuery的trigger需要将参数作为数组而不是作为单独的参数:

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1 + ' ' + myParam2);
}

// You need to do this instead of using onselect in the HTML
$("#mySelect").on("change", changedMySelect);

$("#mySelect").trigger("change", ["param1", "param2"]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="mySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>