Jquery 模拟用户更改选择选项

Jquery 模拟用户更改选择选项,jquery,jquery-events,userscripts,Jquery,Jquery Events,Userscripts,我正在尝试处理一个userscript用户在访问我的站点时可能安装的问题。由于它在沙箱中工作,我不能直接关闭一些干扰我的站点本机功能的userscript功能。所以我唯一的选择就是通过UI访问它们。首先,我需要更改一个特定的复选框。首先,我尝试使用jQuery的.val方法,但它不起作用。然后我做了这个: if($('#someinput:checked').length) $('#someinput')[0].click(); 然后它工作了,不需要的功能被关闭了。下一个是。Just.val没

我正在尝试处理一个userscript用户在访问我的站点时可能安装的问题。由于它在沙箱中工作,我不能直接关闭一些干扰我的站点本机功能的userscript功能。所以我唯一的选择就是通过UI访问它们。首先,我需要更改一个特定的复选框。首先,我尝试使用jQuery的.val方法,但它不起作用。然后我做了这个:

if($('#someinput:checked').length) $('#someinput')[0].click();
然后它工作了,不需要的功能被关闭了。下一个是。Just.val没有像预期的那样提供帮助,因此我也在更改值后立即触发了更改事件:

$('select[name=someselect]').val(0);
$('select[name=someselect]')[0].change();
但它仍然不起作用。我想我需要更恰当地触发变更事件。如何做到这一点?

您需要使用:

$('select[name="someselect"]').change();
而不是:

$('select[name=someselect]')[0].change();
因为$'select[name=someselect]'[0]返回的是DOM元素,而不是jQuery对象。

我找到了一个解决方案:


基本上,据我所知,它正确地触发了所有本机事件,并整齐地包装到jQuery插件中。

$'someinput[0]。单击;缺少一句结束语,你确定有效吗?@Gaurang Tandon是的,我只是打错了,我不明白你的意思。您能重新表述一下吗?对不起,我刚刚再次测试了它,并发现使用复选框$'someinput'[0]时都会出现这种情况;和$'someinput'。单击;工作。仍然$'select[name=someselect]'。更改;不。