Javascript 在各种html元素上禁用单击事件

Javascript 在各种html元素上禁用单击事件,javascript,jquery,html,Javascript,Jquery,Html,我有一个以下场景,其中我的tr中有多个td,如下代码所示: <tr class="tbluplift"> <td align="left"> <a href="#"> <asp:Label ID="lblStd" runat="server" Class="Quote"></asp:Label> </a> </td> </tr> 但是,这个代码似乎不适合我。

我有一个以下场景,其中我的tr中有多个td,如下代码所示:

<tr class="tbluplift">
  <td align="left">
     <a href="#">
       <asp:Label ID="lblStd" runat="server" Class="Quote"></asp:Label>
     </a>
  </td>
</tr>
但是,这个代码似乎不适合我。如您所知,我使用了
console.log('hi')
,但我的日志中没有任何内容。我猜代码在
'click'
部分被破坏了。它甚至没有进入它

有人知道我如何实现功能吗


提前谢谢。

试试这样的方法:

$('td,a,label').click(function(){
  return false;
});
$(function(){
    $('.tbluplift').find('td,a,span').css("cursor", "default");

    $('.tbluplift').on("click", "td,a,span", function (e) {
        console.log("click");
        e.preventDefault();
    });
});

(也可以对三个单独的元素执行此操作)

您的代码可以正常工作,但实际上您是在单击范围/标签,而不是锚定,因此防止在该级别单击会阻止其传播到锚定

最好改用委派事件处理程序:

JSFiddle:

委派的事件处理程序通过侦听要冒泡到祖先的单击(在本例中为
.tbluplift
)来工作,因此只附加一个处理程序。然后应用jQuery过滤器,然后针对实际导致事件的任何选定元素运行提供的函数

注意,JSFIDLE在DOM就绪处理程序中加载代码(默认情况下),因此您可能需要像这样包装代码:

$('td,a,label').click(function(){
  return false;
});
$(function(){
    $('.tbluplift').find('td,a,span').css("cursor", "default");

    $('.tbluplift').on("click", "td,a,span", function (e) {
        console.log("click");
        e.preventDefault();
    });
});
试试这个:

// change cursor css for all elements inside tbluplift
$('.tbluplift').find('a, td,span').css("cursor", "default");

//bind click event for a, td and span inside tbluplift and return false   
$('.tbluplift').on("click","a,td,span",function(e) {
  e.preventDefault();
  return false;
});

将函数包装在

$(document).ready(function() {

//your function
});

并确保jquery已启用。

似乎对我有效。。。您可以检查此小提琴:

无论如何,您可以编写以下代码:

$('.tbluplift td a').css("cursor", "default");
$('.tbluplift td a').click(function (e) {
        console.log('hi');
        e.preventDefault();
    });
而不是:

$('.tbluplift a').each(function () {
    $(this).css("cursor", "default");
    $(this).on('click', function (e) {
        console.log('hi');
        e.preventDefault();
    });
});

你的代码是正确的,但它对我不起作用。你能帮助我,并指导我进一步。好的,你得到任何控制台错误吗?现在工作意味着到底发生了什么?请检查我在帖子中添加的工作演示链接,并将您的代码放入
$(function(){…})
我已经检查了它,并按照您告诉我的方式执行,但它仍然是可单击的,就像触发了click事件一样。click事件将被触发,因为我们使用jquery绑定了
click
事件,但它不会执行任何操作,因为我们返回false。如果您不希望它可点击,那么可以使用
.attr('disabled',true)将其禁用。
日志是受控制的,但它并不阻止默认设置,我不知道为什么,链接正在触发其点击event@HarshSharma:真奇怪<代码>e.preventdefault()是唯一需要的。我想我提供的演示对你有用吧?(适合我)。哦,我想,我忽略了一些问题,在span标记中我有一些文本,比如说“abc”,所以我注意到当我点击“abc”时,点击事件被触发。但是使用firebug工具,我用空值替换了abc,点击事件没有被触发,你知道如何禁用点击文本吗?请让我知道that@HarshSharma:你能用一个更好的HTML示例更新我的JSFIDLE吗?这样我就可以提供一个具体的答案了?你的FIDLE和我的一样,但我的文本有行高