2016-09-02 3 views
1

У меня есть этот JQuery клик событие:Как я могу отправить пользовательские данные в событие JQuery click?

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); 
    }); 

Как я мог отправить пользовательские данные в этом случае, например, для печати {ключ: «привет мир»}? Возможно ли это?

Примечание: В моей рабочей среде jq() является $() или jquery().

Примечание: JQuery документы говорят, что данныеСобытия может быть что угодно, вот официальный документ: https://api.jquery.com/click/ :)

ответ

2

Обычно используется атрибут данных для этого и захватить его с

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>

+0

это просто кнопка генерации, которая просто выполняет функцию. Внутренняя работа делает все остальное. – Vlad

+0

Как бы вы отправили массив данных формы, сериализованный с помощью JQuery, в событие click, если «этот» объект является самим generateButton? Доступ к родителям? :) – Vlad

+1

Уверенный: $ (this) .closest ("form"). Serialize() – mplungjan

1

Вы не можете, но способ обойти это, чтобы иметь атрибут данных в вашем HTML и получить этот атрибут щелчок этого элемента.

например:

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

jq("#generateButton").click(function() { 
    console.log($(this).data('key')); // something 
    ..... 
}); 
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.

+0

Помимо версии, что еще не упоминалось в моем ответе? Event.data была добавлена ​​в 1.1 btw – mplungjan

+0

Да У меня есть последняя версия JQuery. – Vlad

Смежные вопросы