0

每当我尝试在动态创建的输入上添加事件时,我都无法在其上触发事件。我正在使用icheck 插件来自定义这些输入,我不确定问题是否来自于此。

html

<div id="assurance">

</div>

创建输入的函数

for(var i =0; i < data.RESPONSE.Products.Product.length; i++){
        assurHtml +='<div class="radio" onclick="update_gt();">';
        assurHtml +='<label>';
        assurHtml +='<input class="i-radio" type="radio" name="manuCode" id="manuCodes" onclick="update_gt();" value="'+data.RESPONSE.Products.Product[i].CODE+'_'+data.RESPONSE.Products.Product[i].NAME+'_'+data.RESPONSE.Products.Product[i].PRICE+'_'+data.RESPONSE.Products.Product[i].TAX+'" />';
        assurHtml +='</label>';
        assurHtml +='</div>';
}
$('#assurance').html(assurHtml);
$('#assurance input').iCheck({radioClass: 'i-check'});

function update_gt(){
   console.log($('input[name=manuCode]:checked').val());
}

$('#assurance').delegate('input[name="manuCode"]', 'click', function(){
     console.log("fds");
});

$('#assurance').delegate('input[name="manuCode"]', 'ifToggled', function(){
     console.log("fds");
});
4

2 回答 2

1

只需使用.on(),就像这样......

 $(document).on('click','.i-radio',function(){
      var theValue = $(this).val();
      if($(this).not(':checked')){
          $(this).prop("checked", true);
          // Do your stuff you want to do when checked.
          update_gt();
      } else {
          $(this).prop("checked", false);
          // Do your stuff you want to do when unchecked.
          update_gt();
      }
 });

 function update_gt(){
     console.log($('input[name=manuCode]:checked').val());
 }

摆脱所有 onclick=update_gt() 的

现在你有一个点击处理程序来处理所有这些。

于 2016-03-29T14:39:25.287 回答
0

我在 jsfiddle 上尝试了一个示例,它正在工作。我会调查它是您动态生成的 html 的问题,并确保在另一个函数中找不到 update_gt(),因为 onclick="update_gt()" 不会执行它。我会亲自删除所有 update_gt() 并通过 jquery 应用事件。

var assurHtml = "";

for(var i =0; i < 5; i++)
    {
        assurHtml += '<input  type="radio"  name="manuCode" onclick="update_gt()"/>'
    }

    $('#assurance').html(assurHtml);


function update_gt()
{
  console.log($('input[name=manuCode]:checked').val());
}

//$('#assurance').delegate('input[name="manuCode"]', 'click', function()
$('#assurance').on('click', 'input[name="manuCode"]',  function()
 {
     console.log("fds");
 });

//$('#assurance').delegate('input[name="manuCode"]', 'ifToggled', function()
$('#assurance').on('ifToggled','input[name="manuCode"]', function()
{
     console.log("fds");
});

https://jsfiddle.net/5mq531nb/2/

另外,看看 iCheck。似乎有一些您可以注册的活动。

// For oncheck callback
$('#checkbox_id').on('ifChecked', function () { //Do your code })

// For onUncheck callback
$('#checkbox_id').on('ifUnchecked', function () { //Do your code })
于 2016-03-29T14:43:35.557 回答