Javascript Jquery在元素具有类时选中复选框
好的,我的问题是我有一个包含5个元素的表。其中一个元素是复选框,另一个是锚点。当我单击锚定时,它将抑制默认操作并向锚定添加一个类。我的属性“data name”等于复选框的名称。我需要完成以下工作 当我单击带有data属性的锚点时,我需要选中具有相同名称的复选框 我的代码如下Javascript Jquery在元素具有类时选中复选框,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,好的,我的问题是我有一个包含5个元素的表。其中一个元素是复选框,另一个是锚点。当我单击锚定时,它将抑制默认操作并向锚定添加一个类。我的属性“data name”等于复选框的名称。我需要完成以下工作 当我单击带有data属性的锚点时,我需要选中具有相同名称的复选框 我的代码如下 <script> $(document).ready(function(){ var clicks= 0; var DELAY=700; $("a").on("click", function(e){
<script>
$(document).ready(function(){
var clicks= 0;
var DELAY=700;
$("a").on("click", function(e){
e.preventDefault();
if($(e.target).hasClass("selected")){
$(e.target).removeClass("selected");
} else {
$(e.target).addClass("selected");
}
clicks++; //count clicks
if($(e.target).hasClass("selected")){
var data_name = $(e.target).data('name');
if($("input[name="+data_name+']').attr('name') === data_name)
$('input[name='+data_name+']').find('input[name='+data_name+']').prop('checked', true);
}
if(clicks === 1) {
timer = setTimeout(function() {
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
window.location = $(event.target).attr("href");
clicks = 0; //after action performed, reset counter
}
});
$("a").on("dblclick", function(e){
e.preventDefault(); //cancel system double-click event
});
});
</script>
$(文档).ready(函数(){
var=0;
无功延迟=700;
$(“a”)。在(“单击”)上,函数(e){
e、 预防默认值();
if($(e.target).hasClass(“选定”)){
$(e.target).removeClass(“选定”);
}否则{
$(e.target).addClass(“选定”);
}
点击次数+++;//点击次数
if($(e.target).hasClass(“选定”)){
var data_name=$(e.target).data('name');
if($(“输入[name=“+data\u name+”)).attr('name')==data\u name)
$('input[name='+data_name+']')。find('input[name='+data_name+'])。prop('checked',true);
}
如果(单击===1){
计时器=设置超时(函数(){
单击=0;//执行操作后,重置计数器
},延误);
}否则{
clearTimeout(计时器);//防止单击操作
window.location=$(event.target.attr(“href”);
单击=0;//执行操作后,重置计数器
}
});
$(“a”)。在(“dblclick”上,函数(e){
e、 preventDefault();//取消系统双击事件
});
});
该表看起来像附件中的图片(它看起来比可用的代码更好)。
示例表行如下所示
<?php
// $files is the number of files in each directory.
for($i=0; $i<$files;$i++){
?>
<tr>
<td>
<input type="checkbox" name="todelete<?= $i?>" value="404.shtml">
</td>
<td>
<i class="fa fa-file-text-o center"></i>
</td>
<td>
<a href="http://kregelbagel.com/404.shtml" value="" data-name="todelete">404.shtml</a>
</td>
<td>437</td>
<td> bytes</td>
</tr>
<?php
}
?>
还有一些我没有得到,但是试试看
$("a").on("click", function (e) {
e.preventDefault();
//use toggleClass to switch the class
$(this).toggleClass("selected");
clicks++; //count clicks
if ($(this).hasClass("selected")) {
//just use attribute equals selector to get the checkbox
$('input[name=' + $(this).data('name') + ']').prop('checked', true);
}
if (clicks === 1) {
timer = setTimeout(function () {
clicks = 0; //after action performed, reset counter
}, DELAY);
} else {
clearTimeout(timer); //prevent single-click action
window.location = $(event.target).attr("href");
clicks = 0; //after action performed, reset counter
}
});
- 可以使用切换类的显示
- 要查找具有给定名称的输入元素,请使用
免责声明:尚未测试或查看为什么使用单击或代码的其余部分而不是获取数据
值,您可以获取已单击锚定的父级td
的第一个同级元素的输入
,并将选中状态设置为true:
$("a").on("click", function(e){
e.preventDefault();
$(this).toggleClass('selected');
clicks++; //count clicks
if($(this).hasClass("selected")){
$(this).parent().siblings('td:first').find('input').prop('checked', true);
}
// Rest of your code here
});
您还可以使用而不是if
和else
语句来缩短代码。我假设页面需要JavaScript……如果您阻止默认设置,锚定的目的是什么?你能用标签把它换掉吗?类似于:(或者,如果你计划回退,你能将锚更新为图标来象征链接,然后使用标签吗?)我最终选择了这个解决方案。它工作得完美无缺。您还提到了.toggleClass()
,使我的编程效率更高。说真的,你刚刚扔掉了我一半的剧本D非常感谢!