javascript - 如何动态创建 <p> 标签并在单击它时将其分配给 var?

标签 javascript jquery html

如何创建 <p>动态标记并在单击它时将其分配给 var,它应该转到函数 goTo并知道在什么<p>我点击了,为了访问数组的索引lastGoals

我还有其他问题,“30s”中是 30,我执行此函数来更新,当我单击它时,多次调用该函数,我用此函数进行了更新。 我知道i不在 $(document).on(); 范围内还有其他问题,因为如果我把 for 放进去我认为这会以一种不好的方式添加点击。

var isFirstTime = true;
var text = '<p class="boxLastGoals">test</p>';
var size = lastGoals.length;
for (var i = 0; i < size; i++) {
   if (isFirstTime) {
   $('#listLastGoals').html(text);
      isFirstTime = false;
    } else {
       $('#listLastGoals').append(text);
    }
}

$(document).on('click', 'p.boxLastGoals', goTo(event, i));

最佳答案

假设您喜欢使用 JQuery,您可以使用 JQuery 创建 <p>元素为您在循环内并在其中动态附加单击处理程序。您还可以使用 .prop('value', 'test'); 将数据附加到元素方法,以便可以在单击处理程序内部访问它,例如 $(this).prop('value');

我更新了我的示例以包含循环并访问变量以匹配您的场景

示例

HTML

<div id="content">  
</div>

JavaScript

$(document).ready(function() {
  var list = ['goal 1', 'goal 2', 'goal 3', 'goal 4', 'goal 5'];

  for (var i = 0; i < list.length; i++) {
    var text = list[i];
    var pEl = $('<p></p>', {
      text: text
    });

    pEl.prop('arrayIndex', i);
    pEl.on('click', function(e) {
      goToGoal(e, $(this).prop('arrayIndex'));
    });

    $('#content').append(pEl);
  }
});

function goToGoal(e, i) {
  alert('go to goal: ' + i);
}

JSFiddle演示

关于javascript - 如何动态创建 <p> 标签并在单击它时将其分配给 var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36175010/

相关文章:

javascript - Firebase Auth - 设置 session 过期

javascript - 如何向用户发送大文件? Node Telegram Bot API

javascript - jquery .is (':disabled' ) 不工作

html - 相邻的 CSS 选择器 (+) 不工作

html - 图片旁边的 float 列表

javascript - angularjs 范围值不更新

javascript - 使用 jQuery 进行事件绑定(bind)

jquery - 如果我的菜单适合设备上的菜单区域,我该如何阻止它移动?

jquery - Jansy Bootstrap Off-Canvas 菜单单击不关闭

javascript - 发送 Ajax 请求之前的事件(向请求添加一些数据)