首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得动态创建的按钮的值?

如何获得动态创建的按钮的值?
EN

Stack Overflow用户
提问于 2019-04-15 22:03:58
回答 2查看 91关注 0票数 0

我有这个按钮

代码语言:javascript
复制
button(type='button' id='getButton',  onclick='get()', value=classroom.id ) Class Students

..and我有这个jQuery,它从动态创建的页面获取div,这个url是用户单击的教室的ID。

代码语言:javascript
复制
function get(){
  var classroomvalue = $("#getButton").val();
  $.ajax({
    type: 'GET',
    url: 'http://localhost:8080/classroom/' + classroomvalue,
  })
  .done(function(data) {
    console.log('Get response:', JSON.stringify(data,  "", 2));
    $("#getResponse").html($(data).find('#students').html());
  })
  .fail(function(jqXHR, textStatus, err) {
    console.log('Ajax error response:', textStatus);
  });
}

现在,当我按下类学生时,我确实从localhost获得了期望的div下拉列表:当前页面中的8080/CLASSROOM.ID,我唯一找不到的使它工作的东西如下。

教室是动态创建的,我点击的学生教室并不重要,我的代码似乎只有第一个教室ID,而不是我点击的那个。例如:第一教室第二教室

如果我按下第一教室,我就得到了想要的结果,但是当我按下第二教室时,我得到了和第一教室相同的结果,在那里我应该得到第二教室。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 23:32:13

所以多个元素不能有相同的id。将单击按钮的值发送到公共处理程序的一种非常基本的方法是将其作为参数从onclick代码中传递:

代码语言:javascript
复制
<button(type='button',
  onclick='get(this.value)'
  value="someClassroomId" )
 >
    someClassRoomId Students
 </button>

并选取get中的教室id值作为论证。

代码语言:javascript
复制
 function get( classroomvalue){
   $.ajax({
     type: 'GET',
     url: 'http://localhost:8080/classroom/' + classroomvalue,
   })
   .done( // etc

可以使用相同的方式设置不同类的多个按钮,而无需使用id值。

更新jQuery

在HTML中分配给元素的this属性的代码片段中的onevent值是元素。

按照这种模式,按钮onclick处理程序可以在HTML中编码为

代码语言:javascript
复制
<button(type='button',
  onclick='get( $(this))'
  value="someClassroomId" )
>
    someClassRoomId Students
 </button>

因此,当调用get处理程序时,可以在其按钮参数上使用标准的jQuery方法:

代码语言:javascript
复制
 function get( button){
   let classroomvalue = button.val();
   // ... and so on
票数 1
EN

Stack Overflow用户

发布于 2019-04-16 00:24:40

在单击中访问数据的首选方法是将数据保持在闭包中而不是DOM中。当您构造按钮时,您可以使用一个函数来评估用于通过闭包构造按钮的数据。

代码语言:javascript
复制
function createButton(data) {
  let button = $(`<button>${data.label}</button>`);
  button.on('click', function() {
    $('#content').append(`<br>${data.id} was clicked.`);
    // Data is available via the closure for this function at time of click and doesn't need to be stored in the DOM.
  });
  $('#content').append(button);
}

createButton({ id: 1, label: 'Button 1' });

createButton({ id: 2, label: 'Button 2' });
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="content"></div>

改变使用函数构建动态创建的内容的方式将允许您将事件处理程序与传递到函数的课堂数据连接起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55697828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档