代码之家  ›  专栏  ›  技术社区  ›  Stephen M. Redd

假“单击”以激活onclick方法

  •  45
  • Stephen M. Redd  · 技术社区  · 16 年前

    我有一个元素 方法

    我想在另一个函数中激活该方法(或:假装单击此元素)。

    这可能吗?

    11 回复  |  直到 14 年前
        1
  •  76
  •   Ben    16 年前

    选择元素后,可以调用click()

    document.getElementById('link').click();
    

    见: https://developer.mozilla.org/En/DOM/Element.click

    我不记得这对IE是否有效,但应该有效。我附近没有windows电脑。

        2
  •  61
  •   Eduardo Campañó    16 年前

    $('#elementid').click();
    
        3
  •  7
  •   Tom    16 年前

    我可能误解了你的问题,但是,是的, 我会这样做:

    var oElement = document.getElementById('elementId');   // get a reference to your element
    oElement.onclick = clickHandler; // assign its click function a function reference
    
    function clickHandler() {
        // this function will be called whenever the element is clicked
        // and can also be called from the context of other functions
    }
    

    现在,只要单击此元素,代码就会 clickHandler 将执行。类似地,您可以通过在其他函数的上下文中调用函数来执行相同的代码(甚至可以赋值) 点击处理程序 处理由其他元素触发的事件)>

        4
  •  6
  •   rink.attendant.6    12 年前

    如果使用jQuery,则需要使用 .trigger

    element.trigger('click');
    

    http://api.jquery.com/trigger/

        5
  •  6
  •   bnp887    5 年前
    var clickEvent = new MouseEvent('click', {
      view: window,
      bubbles: true,
      cancelable: true
    });
    var element = document.getElementById('element-id'); 
    var cancelled = !element.dispatchEvent(clickEvent);
    if (cancelled) {
      // A handler called preventDefault.
      alert("cancelled");
    } else {
      // None of the handlers called preventDefault.
      alert("not cancelled");
    }
    

    element.dispatchEvent 在所有主要浏览器中都支持。上面的示例基于一个示例 simulateClick() function on MDN .

        6
  •  4
  •   Niklesh Raut    7 年前

    javascript 你可以触发 click() focus() 就像下面的例子

    document.addEventListener("click", function(e) {
      console.log("Clicked On : ",e.toElement);
    },true);
    document.addEventListener('focus',function(e){
      console.log("Focused On : ",e.srcElement);
    },true);
    
    document.querySelector("#button_1").click();
    document.querySelector("#input_1").focus();
    <input type="button" value="test-button" id="button_1">
    <input type="text" value="value 1" id="input_1">
    <input type="text" value="value 2" id="input_2">
        7
  •  3
  •   D'Arcy Rittich    16 年前

    这是一个完美的例子,说明了应该使用javascript库(如Prototype或JQuery)来抽象消除跨浏览器差异。

        8
  •  2
  •   hasen    16 年前

    <div id="c" onclick="alert('hello')">Click me!</div>
    <div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
    
        9
  •  2
  •   Vilx-    16 年前

    fireEvent() 方法不知道这是否适用于其他浏览器。

        10
  •  1
  •   Can Berk Güder Pugalmuni    16 年前

    我没有使用jQuery,但是IIRC,前面提到的第一个方法不会触发 onclick 处理程序。

    onclick

        11
  •  -3
  •   cnaut    14 年前

    eval(document.getElementById('elementId').getAttribute('onclick'));