Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 当在另一个函数中使用时,请使用$(this)引用已单击的元素_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 当在另一个函数中使用时,请使用$(this)引用已单击的元素

Javascript 当在另一个函数中使用时,请使用$(this)引用已单击的元素,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,当“$(this)”用于在click方法之外或其他地方创建的函数时,如何使用“$(this)”引用单击的元素。下面是使用HTML标记的演示 <table> <tr> <td>some value...</td> <td>some value...</td> <td>some value...</td> </tr> &l

当“$(this)”用于在click方法之外或其他地方创建的函数时,如何使用“$(this)”引用单击的元素。下面是使用HTML标记的演示

<table>
    <tr>
        <td>some value...</td>
        <td>some value...</td>
        <td>some value...</td>
    </tr>
    <tr>
        <td>some value...</td>
        <td>some value...</td>
        <td>some value...</td>
    </tr>
    <tr>
        <td>some value...</td>
        <td>some value...</td>
        <td>some value...</td>
    </tr>

</table>

错误/建议:

  • 您拼错了
    ready
  • count
    在代码段中不会递增,因此
    else
    将永远不会执行(我在下面的代码中递增了它)
  • 使用
    ==
    计数与
    0
    进行比较
  • 您可以将
    $(this)
    作为参数传递给
    demo()
    函数

    演示:

    $(文档).ready(函数(){
    var td=$('td');
    var计数=0;
    td.单击(函数(){
    如果(计数+==0){
    //这样做
    }否则{
    //将上下文作为参数发送
    演示($(本));
    }
    });
    })
    功能演示(el){
    el.css(‘颜色’、‘红色’);
    //这里是点击的'td'
    }
    
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    
    的值作为参数传递给
    演示

    在这里,我如何将点击的数据称为$(this)

    答案是:你不应该。您应该将元素传递到函数中。如果确实要使用
    this
    引用DOM元素,则需要使用
    call
    apply
    demo
    函数指定上下文:

    $(document).read(function(){
     var td = $('td');
     var count = 0;
     td.click(function() {
        demo.apply(this);
      })
    })
    
    function demo() {
     $(this).css('color', 'red'); 
    }
    

    您只需绑定到
    td
    元素的click事件,如果它不存在,函数将永远不会启动:

    $('td')。在('click',function()上{
    //如果您需要知道可以执行此操作的tds数量:
    //var cellNum=$('td')。长度;
    //console.log(cellNum);
    变成红色($(本));
    });
    功能变红(el){
    el.css({“背景色”:“红色”});
    };
    
    
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    一些价值。。。
    
    count当前在您的示例中始终为0…如果您共享生成的代码并解释您的答案会更好。对不起,我是通过手机回答的。
    $(document).read(function(){
     var td = $('td');
     var count = 0;
     td.click(function() {
        demo.apply(this);
      })
    })
    
    function demo() {
     $(this).css('color', 'red'); 
    }