【问题标题】:Grab the corresponding object on click of a dynamic button单击动态按钮抓取相应的对象
【发布时间】:2017-11-13 14:02:17
【问题描述】:

我使用包含对象的数组创建了一些动态内容。现在,我的动态内容有一个按钮,可以帮助我在单击时从“myData”数组中获取相应的对象。

我很困惑如何从 myData 数组中获取相应的对象。

你能帮我解决这个问题吗?

代码如下:

var myData = [
  { 
	'car': 'Ford',
	'color': 'Black',
	'model': 'Figo'			  
  }, { 
	'car': 'Ford',
	'color': 'Red',
	'model': 'Endeavour'			  
  },{ 
	'car': 'Jaguar',
	'color': 'White',
	'model': 'F-Type'			  
  },
];
 
$(document).ready(function(){
  $('#createData').click(function(){
	myData.forEach(function(obj){
	  $('.container').append(
		$('<div>').addClass('parent').append(
		  $('<div>').append(
			$('<label>').text('Car: '),
			$('<span>').text(obj.car)
		  ),
		  $('<div>').append(
			$('<br /><label>').text('Model: '),
			$('<span>').text(obj.model)
		  ),
		  $('<br /><button>').text('Click Me').addClass('getData')
		)
	  )
	});
  });			
});

$(document).on('click', '.getData', function(obj){
  var myColor = $(this);
  console.log(obj);
});
.parent {
  border: 1px solid lightgrey;
  border-radius: 5px;
  background-color: skyblue;
  height: 100px;
  margin-top: 5px;
  padding: 10px;			
}
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<button id="createData">Create Data</button>
<div class="container">

</div>

【问题讨论】:

    标签: jquery arrays object events dynamic


    【解决方案1】:

    这里是代码。基本上,我们为循环中的每个按钮附加一个索引,然后使用这个唯一索引访问您的数组。只需在控制台中查看,同时单击即可查看结果。

    var myData = [
      { 
    	'car': 'Ford',
    	'color': 'Black',
    	'model': 'Figo'			  
      }, { 
    	'car': 'Ford',
    	'color': 'Red',
    	'model': 'Endeavour'			  
      },{ 
    	'car': 'Jaguar',
    	'color': 'White',
    	'model': 'F-Type'			  
      },
    ];
    
    var i = 0;
    
    $(document).ready(function(){
      $('#createData').click(function(){
    	myData.forEach(function(obj){
    	  $('.container').append(
    		$('<div>').addClass('parent').append(
    		  $('<div>').append(
    			$('<label>').text('Car: '),
    			$('<span>').text(obj.car)
    		  ),
    		  $('<div>').append(
    			$('<br /><label>').text('Model: '),
    			$('<span>').text(obj.model)
    		  ),
    		  $('<br /><button data="'+i+'">').text('Click Me').addClass('getData')
    		)
    	  )
          i++;
    	});
      });			
    });
    
    $(document).on('click', '.getData', function(obj){
      var myColor = $(this);
      console.log(myData[obj.currentTarget.attributes[0].nodeValue]);
    });
    .parent {
      border: 1px solid lightgrey;
      border-radius: 5px;
      background-color: skyblue;
      height: 100px;
      margin-top: 5px;
      padding: 10px;			
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="createData">Create Data</button>
    <div class="container">
    
    </div>

    这是你想要的还是我这里有什么问题?

    【讨论】:

    • 非常感谢..但是必须有一个选项可以将点击事件添加到动态按钮,其中我可以将整个对象作为参数传递...
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2017-06-10
    • 2020-08-22
    • 1970-01-01
    • 2016-03-04
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多