如何将自定义数据发送到JQuery click事件?

时间:2016-09-02 14:11:27

标签: javascript jquery onclick jquery-events

我有这个JQuery点击事件:

jq("#generateButton").click({key: "hello world"}, function () {
            console.dir(this);// this is the "generateButton" html element. 
        // jq(this) would be the jquery object of the generate button
            frnConstr.setDataObject(this);
        frnConstr.gameObject.state.start(frnConstr.EnteriorScreen.KEY);
    });

我怎么可能将自定义数据发送到此事件,例如print {key:“hello world”}? 它有可能吗?

注意:在我自定义的工作环境中,jq()是$()或jquery()。

注意:jQuery文档说eventData可以是任何东西,这是官方文档: https://api.jquery.com/click/:)

3 个答案:

答案 0 :(得分:3)

通常你会使用数据属性,然后用

抓住它
jq("#generateButton").on("click",function() {
  var custom = $(this).data("custom");
});

使用

<button id="generateButton" data-custom="hello world"> 

您指的是在绑定时间发送的event.data

jq("#generateButton").on("click",{"what":"hello"}, function(event) {
  var custom = $(this).data("custom");
  console.log(event.data.what+" "+custom); // hello world
});

<button id="generateButton" data-custom="world"> 

实施例

$(function() {
  $("#generateButton1").on("click", function() {
    var custom = $(this).data("custom");
    console.log(custom);
  });


  $("#generateButton2").on("click", {
    what: "goodbye"
  }, function(event) { // needed here
    var custom = $(this).data("custom");
    console.log(event.data.what + " " + custom); // hello world
  });

  $("#generateButton3").on("click", function() {
    var formdata = $(this).closest("form").serialize();
    console.log(formdata);
  });
  
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button type="button" id="generateButton1" data-custom="hello world">Hello world</button>

<button type="button" id="generateButton2" data-custom="world">Goodbye world</button>
<hr/>
Serializing:
<form>
  <input type="text" name="field1" value="f1" /><br/>
  <input type="text" name="field2" value="f2" /><br/>
  <button type="button" id="generateButton3">Click to serialize</button>
</form>

答案 1 :(得分:1)

你不能不知道如何在你的html中拥有一个数据属性,并在点击该元素时获得该属性。

例如:

 <button id="generateButton" data-key="something"/>

jq("#generateButton").click(function () {
    console.log($(this).data('key')); // something
    .....
});

答案 2 :(得分:1)

首先,确保您参考jquery版本1.4.3或更高版本。

jq("#generateButton").click({key: "hello world"}, function (event) {
    var key=event.data.key;
    //do something with the key value
});

可以在event.data对象中访问此eventData签名中传递的所有数据。