jQuery 触发在带有附加数据的标记中声明的事件
jQuery trigger event declared in tag with additional data
我有一个带有更改事件处理程序的 select:
<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(已确认有效)。我们需要将 onchange 保留在 HTML 中,但如果需要我们可以修改它。
当您使用 onchange="something"
属性时,被调用的函数将只接收您放入属性中的内容。它不会得到事件或其他任何东西。因此,放置 onchange="changedMySelect(1, 2)"
将使用参数 1
和 2
.
调用您的 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>
我有一个带有更改事件处理程序的 select:
<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(已确认有效)。我们需要将 onchange 保留在 HTML 中,但如果需要我们可以修改它。
当您使用 onchange="something"
属性时,被调用的函数将只接收您放入属性中的内容。它不会得到事件或其他任何东西。因此,放置 onchange="changedMySelect(1, 2)"
将使用参数 1
和 2
.
为了让它接收事件和其他参数,您将不得不通过 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>