处理动态项中的值 Jquery

Handling value in dynamic items Jquery

我在 jquery 准备计算器。使用 static HTML 时,显示、处理按钮的值没有问题,但是当我想让它动态时,我卡在了原地。我无法从按钮获取值并显示它。

HTML:

<body>
    <div id="result">test</div>
    <input type="button" value="Calc" id="cal"/>
    <div id="content"></div>
</body>

我的脚本:

$(function(){
$("#cal").click(function(){
    $("#content").append(
            "<div id='container'>"+
                "<input disabled='disabled' type='text' id='display' onclick=''>" +
            "<div>" +
                "<input type='button' class='signbutton' value='(' id='paramO' onclick=''>" +
                "<input type='button' class='signbutton' value=')' id='paramC' onclick=''>" +
                "<input type='button' class='signbutton' value='%' id='modulo' onclick=''>" +
                "<input type='button' class='signbutton' value='C' id='clear' onclick=''>" +
            "</div>"+
            "</div>"
});

现在我想在 "display field" 中显示按钮的值。

$(".signbutton").click(function(){ 
    var i = $(this).val();
    $("#display").val($("#display").val() + i)
}

我也试过这样的解决方案:

$("#container").on("click", $(".signbutton"), function(event){
    var i = $(event.target).val();
    $("#display").val($("#display").val() + i)
}

您的代码存在非右括号问题。

查看包含这些修复的代码片段

$(function() {
  $("#cal").click(function() {
    $("#content").append(
      "<div id='container'>" +
      "<input disabled='disabled' type='text' id='display' onclick=''>" +
      "<div>" +
      "<input type='button' class='signbutton' value='(' id='paramO' onclick=''>" +
      "<input type='button' class='signbutton' value=')' id='paramC' onclick=''>" +
      "<input type='button' class='signbutton' value='%' id='modulo' onclick=''>" +
      "<input type='button' class='signbutton' value='C' id='clear' onclick=''>" +
      "</div>" +
      "</div>");

    $(".signbutton").click(function() {
      var i = $(this).val();
      $("#display").val($("#display").val() + i)
    });


    /*

    $("#container").on("click", $(".signbutton"), function(event){
        var i = $(event.target).val();
        $("#display").val($("#display").val() + i)
    }*/
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body>
  <div id="result">test</div>
  <input type="button" value="Calc" id="cal" />
  <div id="content"></div>
</body>

现在显示使用您的第一种方法的值。

您的函数声明在语法规则方面存在问题。并在附加控件后定义 .signbuttonclick 事件。

$(function(){
 $("#cal").click(function(){
  $("#content").append(
    "<div id='container'>"+
     "<input disabled='disabled' type='text' id='display' onclick=''>" +
    "<div>" +
     "<input type='button' class='signbutton' value='(' id='paramO' onclick=''>" +
     "<input type='button' class='signbutton' value=')' id='paramC' onclick=''>" +
     "<input type='button' class='signbutton' value='%' id='modulo' onclick=''>" +
     "<input type='button' class='signbutton' value='C' id='clear' onclick=''>" +
    "</div>"+
    "</div>");
  $(".signbutton").click(function(){ 
   var i = $(this).val();
   $("#display").val($("#display").val() + i)
  });
 });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result">test</div>
    <input type="button" value="Calc" id="cal"/>
    <div id="content"></div>

正如大家之前提到的,您应该修复语法,但据我了解您的问题,他们并没有真正回答这个问题。

首先,我建议将您的 jQuery 代码包装在

$(document).ready(function() {
//code here
});

我为你想出了这个代码:

"<input type='button' class='signbutton' value='(' id='paramO' onclick='$(\"#display\").val($(\"#display\").val() + $(this).attr(\"value\"));'>"

此代码将输入的值设置为 "Current value + the value of the button"

有点,因为我是在旅途中完成的,可能会有一些打字错误,但我希望我能帮助到你。