将值绑定到jquery中动态生成的div

时间:2018-01-11 04:39:55

标签: javascript jquery

我有3个按钮,分别是期间,午餐和休息。当我单击这些按钮中的任何一个时,div id会根据按钮单击动态生成。

我为每个3按钮写了一个onclick,在click事件中我正在创建动态div。

首次点击按钮周期时,它会创建一个新的div并计算周期开始时间和结束时间,并将这些值绑定到动态创建的div。

但我的问题是,如果我第二次点击同一个按钮,会生成新的div,但该值不是绑定,而是重写第一个div。如何将数据绑定到生成的div。

<button id="btn-period">PERIOD</button>
<button id="btn-lunch">LUNCH</button>
<button id="btn-break">BREAK</button>
<div id="period-container"> 
</div>

    $("#btn-period").click(function(){
        var periodTime = localStorage.getItem("totalMins");
        var f=periodTime.split(".");
        var perHour = f[0]; //total minuts after split

        $("#period-container").append('<div class="period-div"><div class="row"><div class="col-md-4"><span id="perid-text">PERIOD</span></div><div class="col-md-4"><span id="perid-stime"></span></div><div class="col-md-4"><span  id="perid-etime"></span></div></div></div>')
        var endt = $("#hdVal").text();//fetching endtime of prayer
        var funOutput=calculate(endt,perHour);//test for end time of prayer 
    });
    $("#btn-lunch").click(function(){
    var lunchTime = localStorage.getItem("lunch");
    $("#period-container").append('<div class="lunch-div" style="background-color: #5bc0de; color: #fff; box-shadow: 1px 1px 2px grey; padding: 10px; margin-top: 10px;margin-bottom: 10px;"><div class="row"><div class="col-md-4"><span id="perid-text">LUNCH</span></div><div class="col-md-4"><span id="perid-stime"></span></div><div class="col-md-4"><span  id="perid-etime"></span></div></div></div>')
  });
    $("#btn-break").click(function(){
    var breakTime = localStorage.getItem("breakduration");


    $("#period-container").append('<div id="" style="background-color: #f0ad4e; color: #fff;    box-shadow: 1px 1px 2px grey;padding: 10px;margin-top: 10px;margin-bottom: 10px;"><div class="row"><div class="col-md-4"><span id="perid-text">BREAK</span></div><div class="col-md-4"><span id="perid-stimes"></span></div><div class="col-md-4"><span  id="perid-etime"></span></div></div></div>')

});

function calculate(endTimes,perHour)
{
    alert("dsd");
    $("#perid-stime").html(endTimes);
    var d=endTimes.split(":");
    var min= (+d[0]) * 60  + (+d[1]);
    var few=parseInt(min) + parseInt(perHour);
    var num = few;
    var hours = (num / 60);
    var rhours = Math.floor(hours);
    var minutes = (hours - rhours) * 60;
    var rminutes = Math.round(minutes);
    $("#perid-etime").html(rhours +" : "+ rminutes);
    $("#hdVal").text(rhours +" : "+ rminutes);

}

目前我只在句号中调用计算功能但我想在2按钮点击的其余部分调用相同的功能。

enter image description here

2 个答案:

答案 0 :(得分:0)

您正在按钮期间点击事件中创建具有相同ID的div。

calculate(...)函数中,您只为perid-etime div设置了html。

解决方案是您必须生成具有不同ID和相同ID的div,您必须在calculate(...)函数中使用它来更新文本/ HTML。

答案 1 :(得分:0)

请检查此https://jsfiddle.net/qd1r03wk/

你的问题在于设置所有具有相同ID的div,相反,我只创建具有唯一ID的

$("#btn-period").click(function(){
        var periodTime = localStorage.getItem("totalMins") || "8.00";
        var f=periodTime.split(".");
        var perHour = f[0]; //total minuts after split
                var periodLength = $(".period-div").length;
        $("#period-container").append('<div class="period-div"><div class="row"><div class="col-md-4"><span id="perid-text'+periodLength+'">PERIOD</span></div><div class="col-md-4"><span id="perid-stime'+periodLength+'"></span></div><div class="col-md-4"><span id="perid-etime'+periodLength+'"></span></div></div></div>')
        var endt = "12:30";// $("#hdVal").text();//fetching endtime of prayer
        var funOutput=calculate(endt,perHour,periodLength);//test for end time of prayer 
});

请注意我已注释掉您的变量endtlocalstorage