0

我已经阅读了许多主题如何处理 Javascript 的 onclick vs Jquery;s .click(),但我不知道如何使用 jQuery 传递参数。

第一个选项 - Javascript、HTML

The HTML

<input type="button" onclick="doAction(<?=$id?>,'order');" />

因此在 JS 中我可以做到

function doAction(id,type){

 //do something here

}

第二个选项 - jQuery,HTML

The HTML

<input type="button" id="trigger" />

所以jQuery变成了

$("#trigger").click(function() {

   //do something here

 });

我是否必须做类似的事情(在这种情况下,我如何知道 id 和 type 的值?)

  $("#trigger").click({id: "???", type: "????"}, other_function);

  function other_function(event){
     id = event.data.param1;
     type = event.data.param2;
   }

我是否必须通过使用“传递参数”

  HTML
  <input type="hidden" id="id" value="<?=$id?>" />
  <input type="hidden" id="type" value="order" />

  jQuery

   $("#trigger").click(function(){
      var id = $("#id").val();
      var type = $("#type").val();
      //do something

   });

我想避免使用 onclick() ,因为我已经读到应该避免使用它。我只需要一种合适的方式来传递参数,就像我使用 onclick() 所做的那样。

4

4 回答 4

6

您可以使用数据将data()传递给事件。

现场演示

 <input type="hidden" id="id" data-idatt="123" />
 <input type="hidden" id="type" value="order" />

 $("#trigger").click(function(){
    var id = $("#id").data("idatt").val();
 });
于 2013-01-18T15:39:57.440 回答
0
$("#myElement").click({ "a": 1, "b": 2 }, function (e) {
    alert(e.data.a); // alerts 1
    alert(e.data.b); // alerts 2
});
于 2013-01-18T15:44:36.453 回答
0

使用 chrome 打开控制台并尝试这个

$(#trigger);
$(#trigger).click(function(e) {
  console.log(
               $(this),
               $(this).attr('type') 
             );
});

该函数有一个名为 this 的隐藏变量,它是您触发事件的元素。

于 2013-01-18T15:42:01.020 回答
0

您不需要从外部获取参数,也不需要隐藏字段

$("#trigger").click(function(){
      var id = <?=$id?>;
      //do something
   });
于 2013-01-18T15:41:16.780 回答