jq(jq)实现对html标签(元素)动态添加onclick事件

原本很简单的一个功能,却花了我1天时间,所以很有必要记下来

原因是我采用了jq,而网站是采用一款名为SuperSlider的jq插件,这个插件会导致onclick里的事件自动触发

通常实现方法

<h1 id="one">这是一个标签</h1>

1、jq

jq实现给元素动态添加onclick方法有on和attr以及其他

(1)on

jq1.7版本会报错:“on is not a function” ,百度过都说用1.8的版本,因此我改用1.8.3版本的jq库,完美运行

JQ
<script language="javaScript">
	jQuery(document).ready(function($) {
		$("#box").on("click",function(){
           searchBox()
         })
	}
	function echoMsg() {
		alert("输出标签")
	}
</script>
(2)attr

1.7.几版本的jq库也可以运行

JQ
<script language="javaScript">
	jQuery(document).ready(function($) {
		$("one").attr("onclick",echoMsg())
	}
	function echoMsg() {
		alert("输出标签")
	}
</script>

2、js

先获取标签,再用setAttribute方法

JS
<script language="javaScript">
	jQuery(document).ready(function($) {
		var obj = document.getElementById('one')
        obj.setAttribute("onclick","echoMsg()")
	}
	function echoMsg() {
		alert("输出标签")
	}
</script>

上面这个例子比较简单,但我遇到的问题是在父子元素间,增加或去除onclick事件。

所以一开始我求助群里的大神,他们觉得是冒泡事件引起的。实际上并不是,因为我试过remove子标签,再通过jq的append创建新标签也会执行onclick里的函数(就是因为SuperSlider插件引起的)。后来我改用原生js函数setAttribute解决问题

之所以记录这边文章,是想提醒自己,当正常使用函数会出现意想不到的结果时,要去注意是不是不是本身代码有问题,而是其他地方影响到这个结果,要多方位思考,不要过于固执一个点

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 首先,你需要在前端页面中使用HTML代码实现一个表格,包含多行数据以及复选框用于用户选择。然后,你需要使用JavaScript获取到被选中的行数据。最后,你需要将这些数据传递到后台,使用Java代码实现将这些数据写入到第二个表格中。 以下是一个基本的HTML页面示例,包含两个表格,一个用于选择行数据,另一个用于展示已选中的数据: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>表格数据选择示例</title> <script type="text/javascript"> // 获取被选中的行数据 function getSelectedData() { var table = document.getElementById("table1"); var rows = table.getElementsByTagName("tr"); var selectedRows = []; for (var i = 1; i < rows.length; i++) { var checkbox = rows[i].getElementsByTagName("input")[0]; if (checkbox.checked) { var cells = rows[i].getElementsByTagName("td"); var rowData = { "name": cells[0].innerHTML, "age": cells[1].innerHTML, "gender": cells[2].innerHTML }; selectedRows.push(rowData); } } return selectedRows; } // 将数据写入第二个表格 function writeData() { var selectedRows = getSelectedData(); var table = document.getElementById("table2"); for (var i = 0; i < selectedRows.length; i++) { var row = table.insertRow(); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); cell1.innerHTML = selectedRows[i].name; cell2.innerHTML = selectedRows[i].age; cell3.innerHTML = selectedRows[i].gender; } } </script> </head> <body> <h2>表格数据选择示例</h2> <table id="table1"> <tr> <th>选择</th> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> <tr> <td><input type="checkbox"></td> <td>张三</td> <td>18</td> <td>男</td> </tr> <tr> <td><input type="checkbox"></td> <td>李四</td> <td>20</td> <td>女</td> </tr> <tr> <td><input type="checkbox"></td> <td>王五</td> <td>22</td> <td>男</td> </tr> </table> <br> <button onclick="writeData()">确定</button> <br><br> <h2>已选择的数据</h2> <table id="table2"> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </table> </body> </html> ``` 在上述代码中,我们定义了两个表格,第一个表格包含多行数据以及复选框用于用户选择,第二个表格用于展示已选中的数据。我们还定义了两个JavaScript函数,getSelectedData用于获取被选中的行数据,并将其存储在一个数组中;writeData用于将这些数据写入到第二个表格中。 在后台Java代码中,你可以使用Spring Boot来创建一个RESTful API,接收前端传递过来的数据,并将其写入到数据库或其他数据存储中。具体实现方法因项目而异,这里不再赘述。 ### 回答2: 在JQ springboot中实现获取第一个表格多行数据的CheckBox选中行数据,并写入第二个表中,你可以按照以下步骤操作: 1. 在第一个表格中,为每个需要选择的行添加一个CheckBox,给每个CheckBox设置一个唯一的标识符,例如id或name。 2. 使用JavaScript或jQuery来获取第一个表格中选中CheckBox的行数据。可以通过监听CheckBox的点击事件实现。在点击事件中,遍历所有CheckBox,判断是否选中,如果是选中状态,则获取该行数据,并保存到一个数组中。 3. 使用JavaScript或jQuery将选中的行数据写入第二个表格中。可以先清空第二个表格的内容,然后遍历保存选中行数据的数组,逐行添加到第二个表格中。 4. 最后,将实现以上功能的代码嵌入到HTML的适当位置,确保两个表格存在,并且所有的行都已添加CheckBox。 以下是一个简单的示范代码: ``` <script> $(document).ready(function() { $('#copy').click(function() { var selectedRowsData = []; $('#table1 input[type=checkbox]:checked').each(function() { var rowData = {}; var row = $(this).closest('tr'); rowData.column1 = row.find('td:eq(0)').text(); // 获取第一列数据 rowData.column2 = row.find('td:eq(1)').text(); // 获取第二列数据 // 将其他需要的列数据依此添加到rowData中 selectedRowsData.push(rowData); }); $('#table2 tbody').empty(); $.each(selectedRowsData, function(index, rowData) { var newRow = '<tr><td>' + rowData.column1 + '</td><td>' + rowData.column2 + '</td></tr>'; // 根据需要添加其他列数据 $('#table2 tbody').append(newRow); }); }); }); </script> <table id="table1"> <thead> <tr> <th></th> <th>列1</th> <th>列2</th> <!-- 其他需要的列标题 --> </tr> </thead> <tbody> <tr> <td><input type="checkbox"></td> <td>数据1</td> <td>数据2</td> <!-- 其他需要的列数据 --> </tr> <!-- 其他行数据 --> </tbody> </table> <button id="copy">复制选中行</button> <table id="table2"> <thead> <tr> <th>列1</th> <th>列2</th> <!-- 其他需要的列标题 --> </tr> </thead> <tbody> <!-- 选中的行数据将被复制到此处 --> </tbody> </table> ``` 请根据你的实际情况对代码进行相应的调整和补充,并确保引入了jQuery库。希望以上回答能够帮到你,如果有任何疑问,请随时询问。 ### 回答3: 使用JQ和Spring Boot结合开发一个网页,实现获取第一个表格多行数据的CheckBox选中的行数据,并将这些数据写入到第二个表中。下面是具体实现过程: 1. 首先,我们需要编写一个HTML页面,包含两个表格,第一个表格用于展示数据,第二个表格用于存放选中的行数据。在第一个表格的每一行前添加一个CheckBox,用于选择数据行。为每个CheckBox定义一个class,例如"checkbox-item"。 2. 使用JQ编写JavaScript代码,当第一个表格的CheckBox被点击时,获取选中的CheckBox的值,即选中行的数据。可以使用类选择器".checkbox-item:checked"来获取选中的CheckBox。遍历选中的CheckBox,使用JQ的父元素选择器和兄弟选择器,找到对应的数据行,获取数据,并将其存储到一个数组中。 3. 使用AJAX将数组中的数据发送到后端的Spring Boot应用。可以使用JQ的$.ajax方法发送POST请求,将数据传递给后端的一个API接口。 4. 在Spring Boot应用中,定义一个Controller接口,接收前端发送的数据。使用注解@RequestParam获取传递的数据。处理接收到的数据后,可以将数据存储到数据库或进行其他操作。 5. 当数据接收和处理完成后,可以将处理后的数据返回给前端。可以将数据封装成一个JSON对象,使用JQ的$.getJSON方法获取数据,并使用JQ的方法将数据添加到第二个表格中。 以上就是使用JQ、Spring Boot和HTML代码实现获取第一个表格多行数据的CheckBox选中的行数据,并将数据写入到第二个表格的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值