禁用子元素上的jQuery单击事件

时间:2016-02-23 10:24:23

标签: jquery events click row

我有一个表格,我可以将所有表格行与其中的嵌套链接相关联。但是我试图禁用特定的表行,一旦他们有一个与之关联的类就停止被点击。

<script>
$('.selectable tr').click( function() {
    var productLink = $(this).find("a");

    productLink.attr("target", "_doc");
    window.open(productLink.attr("href"));

    return false;
});

$('.vandut_activ').click( function() {
    $(this).attr('disabled', 'disabled');
    return false;
});
</script>

问题是当我用.vandut_activ单击表行时,它仍会打开一个新的选项卡,该选项卡为空,因为它没有内部链接可供访问。在这种情况下如何停止点击事件?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

我不知道你的jQuery版本,但是从jQuery1.6 +你应该使用$("input").prop('disabled', true);来禁用事件。尝试下面的代码(未测试)

选项1:

<script>
$('.selectable tr').click( function() {
    var productLink = $(this).find("a");

    productLink.attr("target", "_doc");
    window.open(productLink.attr("href"));

    return false;
});

$('.vandut_activ').click( function() {
    $(this).prop('disabled', true);
    return false;
});
</script>

选项2:

您可以使用css属性pointer-events来禁用点击事件。

<script>
$('.selectable tr').click( function() {
    var productLink = $(this).find("a");

    productLink.attr("target", "_doc");
    window.open(productLink.attr("href"));

    return false;
});

$('.vandut_activ').click( function() {
    $(this).css('pointer-events','none');
    return false;
});
</script>

答案 1 :(得分:1)

如果您不希望该点击工作&#39; tr&#39;正在拥有&#39; vandut_activ&#39;那么你可以试试这个,

希望这就是你要找的东西

$('.selectable tr:not(.vandut_activ)').on('click', function() {
var productLink = $(this).find("a");

productLink.attr("target", "_doc");
window.open(productLink.attr("href"));

return false;});