我怎样才能模仿jQuery的trigger()?

时间:2011-01-10 00:22:20

标签: javascript

我正在写一个小脚本(忽略我在FaceBook上遇到的数百个愚蠢的请求)。

var inputs = document
              .getElementById('contentArea')
              .getElementsByTagName('input');

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) {

    if (inputs[i].value !== 'Ignore') {
        continue;
    }

    // What I would do with jQuery, if inputs[i] was a jQuery object.
    inputs[i].click();

}

所以基本上我想在所有这些忽略按钮上调用click事件,让FaceBook的AJAX完成剩下的工作。

如何在没有jQuery的情况下模拟点击?我用谷歌搜索但没有找到答案。

2 个答案:

答案 0 :(得分:1)

我刚尝试了上面的代码(使用click()),它在我的Firefox中运行。

所以我猜答案是,就像jQuery一样

最终代码是......

var inputs = document
             .getElementById('contentArea')
             .getElementsByTagName('input');

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) {

    if (inputs[i].name !== 'actions[reject]') {
        continue;
    }

    inputs[i].click();

}

答案 1 :(得分:1)

.click() is a method of HTMLInputElements in Firefox(不确定是否在其他浏览器中)。

另一种应该在其他浏览器中运行的方法是使用document.createEvent

var inputs = document
              .getElementById('contentArea')
              .getElementsByTagName('input');

for (var i = 0, inputsLength = inputs.length; i < inputsLength; i++) {

    if (inputs[i].value !== 'Ignore') {
        continue;
    }
    // maybe it is enough to create it only once before the the loop, don't know
    var evt = document.createEvent("MouseEvents");
    evt.initMouseEvent("click", true, true, window,
      0, 0, 0, 0, 0, false, false, false, false, 0, null);
    inputs[i].dispatchEvent(evt);

}

当然,人们会将其封装在功能中以使其可重复使用;)