什么是实际的.val()。触发器('change')在做什么?

时间:2018-06-13 11:54:05

标签: javascript jquery html select twitter-bootstrap-3

我对项目中的这一行感到困惑:

此ID:categories-product属于<select>,我在项目中看到有人写过:我想知道这基本上意味着什么?

$('#categories-product').val(product.category.id).trigger('change');

请有人能解释一下吗?

由于

5 个答案:

答案 0 :(得分:2)

大多数jQuery方法通过返回this(这是您调用方法的jQuery集)提供链接。这是jQuery API的绝对关键部分。 val是其中一种方法。所以代码就这样做了:

$('#categories-product').val(product.category.id);
$('#categories-product').trigger('change');

...但无需再次查看元素。

所以它设置了select的值,然后在其上触发change事件(可能是那个事件的处理程序做了一些事情)。

答案 1 :(得分:1)

为了更好地理解它,你可以在2个陈述中打破这一行

$('#categories-product').val(product.category.id);
$('#categories-product').trigger('change');

现在,很明显第一行设置了值,第二行触发了change事件。以上只是将陈述扼杀在一个陈述中的简便方法。

答案 2 :(得分:1)

您的DOM中必须有一个下拉i-e select标记,其ID为categories-product

$('#categories-product').val(product.category.id).trigger('change');

将某个值设置为选定值,然后触发change事件,以便在该选择器上为change事件添加任何侦听器时,应执行回调

答案 3 :(得分:1)

trigger('change')实际上允许javascript运行时执行元素的change事件。如果您已将任何change事件与该元素相关联,那么这将允许显式触发该更改事件。

实际上,trigger()的工作只是执行附加到给定事件类型的匹配元素的所有处理程序和行为。将事件名称指定为参数只会触发该事件。像,

trigger('change') //triggers the change event listener only

trigger('click') //triggers the click event listener only

所以,你的代码

('#categories-product').val(product.category.id).trigger('change');

将设置#categories-product的值,然后这将显式触发change事件,以便执行与此元素关联的change操作。

答案 4 :(得分:1)

在Jquery中称为Chaining,在Jquery Chaining找到更多详细信息。它相当于

$('#categories-product').val(product.category.id);
$('#categories-product')..trigger('change');