繁体   English   中英

如何将元素对象作为参数发送到没有ID的javascript函数

[英]How to send the element object as parameter to javascript function without ID

在函数ClickedRow中,我想使用被点击的“a”。 所以我希望将其作为参数接收。

<td ...... >
<span class="......>
  <span onmousedown="event.cancelBubble = true">
      <a class="GridLinkRenderer" href="javascript:ClickedRow(this)"  onclicklink="javascript:ClickedRow(this)" urlText="XXXX">

<td ......
<span class="......>
  <span onmousedown="event.cancelBubble = true">
      <a class="GridLinkRenderer" href="javascript:ClickedRow(this)"  onclicklink="javascript:ClickedRow(this)" urlText="XXXXX">

基于点击<a ....>我想隐藏/显示它(或显示/隐藏接下来<a class= "GridLinkRenderer"其他<td ...> )的功能ClickedRow(本)。 我该怎么做 ?

我试图发送点击的$(行).next()。eq(0).tagName和row.style.display = 'none' ,它表示它是“未定义的”。

function ClickedRow(row){

$(row).next().eq(0).hide();
$(row).hide();


}

而不是这个,删除href并使用

$('#TheidOfTheA').on('click'function(){
let myAElement = $(this);
}

你看过nearest(),find()和next()吗?

没有测试过这个...但是如果我正确的话,这至少应该指向正确的方向。

我不知道OP是否在tr中使用了td而在表中使用了tr它应该这样我只是快速地提到它是无效的HTML应该有没有tr作为父级的任何td它是无效的HTML有一个没有表作为其祖先的tr。

如果从嵌套在td中的标签开始,您需要爬出

$(this).closest('td')...

一旦进入细胞水平,环顾四周左边的细胞: ....prev('td') ,或右边: ....next('td')或两者: ....siblings('td') 然后沿着每个td 向下找到嵌套在其中的链接并将其关闭/打开: ....find('.gLR').fadeToggle();

$(this).closest('td').siblings('td').find('.gLR').fadeToggle();

 $('.gLR').not('.g5').hide(); $('.gLR').on('click', function(e) { if ($(this).hasClass('g5')) { $('.gDir').fadeToggle(); } else if ($(this).hasClass('g1') || $(this).hasClass('g9')) { const cell = $(this).closest('td'); cell.siblings('td').find('.gLR').fadeToggle(); } else if ($(this).hasClass('g4')) { $(this).closest('td').prev('td').find('.gLR').fadeToggle(); } else if ($(this).hasClass('g6')) { $(this).closest('td').next('td').find('.gLR').fadeToggle(); } else { return false; } }); 
 :root { font: 700 5vw/1.5 Consolas } table { table-layout: fixed; border-collapse: collapse; } td { width: 20%; text-align: center } a { display: block; height: 10vh; text-decoration: none; color: cyan; } a:hover { color: tomato; } a.g5:hover { font-size: 0; } a.g5:hover::after { content: '\\1f536'; font-size: 5vw; } td b { display: block; height: 10vh; } 
 <table> <tr class='gRA'> <td colspan='2'> <b><a href='#/' class="gLR g0">🌈</a></b> </td> <td><b><a href='#/' class="gLR gDir g1">⮝</a></b></td> <td colspan='2'> <b><a href='#/' class="gLR g2">🦄</a></b> </td> </tr> <tr class='gRB'> <td><b><a href='#/' class="gLR g3">🏰</a></b></td> <td><b><a href='#/' class="gLR gDir g4">⮜</a></b></td> <td><b><a href='#/' class="gLR g5">🔷</a></b></td> <td><b><a href='#/' class="gLR gDir g6">⮞</a></b></td> <td><b><a href='#/' class="gLR g7">🏯</a></b></td> </tr> <tr class='gRC'> <td colspan='2'> <b><a href='#/' class="gLR g8">🔥</a></b> </td> <td><b><a href='#/' class="gLR gDir g9">⮟</a></b></td> <td colspan='2'> <b><a href='#/' class="gLR g10">💀</a></b> </td> </tr> </table> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

我尝试了两个推荐(thx for it) - 没有成功。
看起来“this”参数不像clicked元素(对象)引用那样传递。

参数“row”似乎就像所有对象的父类一样,所以就像新的Object而不是被点击的对象一样。

我不确定是否href="javascript:ClickedRow(this)" onclicklink="javascript:ClickedRow(this)"是正确的语法。

所以复制了你的样本并想出了这个。 ;)尝试这一点..并确保你了解这里发生了什么。

$(() => {
            $("body").on("click",".GridLinkRenderer", (e) => {
                e.preventDefault();
                //works on the first link.. stil misses a few check.. 
                //for example do we have the next td.. at all.. 
                console.log($(e.currentTarget).closest('td').next('td').find('.GridLinkRenderer'));
            })
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM