Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery在元素具有类时选中复选框_Javascript_Jquery_Html_Checkbox - Fatal编程技术网

Javascript Jquery在元素具有类时选中复选框

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){

好的,我的问题是我有一个包含5个元素的表。其中一个元素是复选框,另一个是锚点。当我单击锚定时,它将抑制默认操作并向锚定添加一个类。我的属性“data name”等于复选框的名称。我需要完成以下工作

当我单击带有data属性的锚点时,我需要选中具有相同名称的复选框

我的代码如下

<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非常感谢!