jquery 如何使表格数据单元格中的文本成为指向回调函数的可单击链接?

5sxhfpxr  于 2023-06-29  发布在  jQuery
关注(0)|答案(2)|浏览(122)

我试图使td元素中的文本成为一个可点击的链接,它调用一个回调函数,然后打开一个只读的详细信息窗口。我希望文本看起来像一个链接,这样用户就知道点击它。以前的方式是您可以单击整个表行,但没有迹象表明它甚至是可单击的。另外,我希望只有特定列的文本是可单击的。
这是我添加到目标单元格的锚,它发生在对象的init函数中:

$(td).html('<a href="#" onclick="object.myFunction.call(this)">' + cellData + '</a>');

这是在init外部发生的回调函数:

grid.readOnlyModalCallback = function () {
    let guid = $(this).data("guid");
    if (guid) {
        grid.showDetailModal(guid);
    }
    return false;
};

这使得文本像我想要的那样成为一个链接,但是当点击时,除了将页面重定向到“#”之外,它什么也不做。我知道这个函数可以工作,因为如果我让整行都可以点击,它就会调用,就像我提到的那样。
有人能判断出我做错了什么吗?

ffscu2ro

ffscu2ro1#

看起来你试图将链接上的click事件绑定到object.myFunction,但实际上你想要的是将它绑定到grid.readOnlyModalCallback
1.使用jQuery.data()存储guid和链接:

let guid = 'yourGuidValueHere'; // retrieve your guid value accordingly
$(td).html('<a href="#" class="link-class">' + cellData + '</a>').find('a').data('guid', guide);

1.然后在init函数中使用jQuery.on()将click事件绑定到链接:

$('.link-class').on('click', grid.readOnlyModalCallback);

1.确保在回调中阻止默认事件:

grid.readOnlyModalCallback = function (event) {
 event.preventDefault();
 let guid = $(this).data("guid");
 if (guid) {
     grid.showDetailModal(guid);
 }
 return false;
};
lp0sw83n

lp0sw83n2#

只需向td添加一个click事件处理程序,并对td进行样式设置,使其清楚地显示可以单击。
参见以下示例:

document.querySelectorAll(".clickable").forEach(function(el){
  el.addEventListener("click", function(){
    console.log("You clicked me.");
  });
});
table, tr, td {
  border:1px solid grey;
}

.clickable {
  cursor:pointer;
  color:#00f;
}

.clickable:hover {
  color:#f00;
}
<table>
  <tr>
    <td>Row 1 - Column 1</td>
    <td>Row 1 - Column 2</td>
    <td>Row 1 - Column 3</td>    
  </tr>
    <tr>
    <td>Row 2 - Column 1</td>
    <td class="clickable">Row 2 - Column 2</td>
    <td>Row 2 - Column 3</td>    
  </tr>
    <tr>
    <td class="clickable">Row 3 - Column 1</td>
    <td>Row 3 - Column 2</td>
    <td>Row 3 - Column 3</td>    
  </tr>
</table>

相关问题