使jQuery丢弃特定div类的动作

时间:2014-05-09 16:10:05

标签: javascript jquery html jquery-ui

我写了一个jQuery(函数)来执行某个div-class(A)的动作。当我们点击该div类中的超链接时,这些链接将在另一个div-id(B)中打开。在这里,我的问题是:我想在第一个div类(A)中禁用一个链接的函数。

例如,如果我们单击链接1时div类(A)中有两个超链接(假设为1和2),它应该执行jQuery。当我们单击链接2时,不应该为该链接执行jquery。 注意:两个链接(link1和link2都在同一个div-class(A)中)。

我的jQuery函数是

$('.div-class(A) a').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});

我该如何处理这个问题。我需要添加禁用功能吗?显然,我不应该使用.remove() - &gt;完全删除链接。

任何建议???

3 个答案:

答案 0 :(得分:2)

如果您使用.on()来绑定您的活动,那么您可以将其与.off()取消绑定,如下所示:

更新以反映OP的实际需求(我认为)

$('.div-class(A) a').on('click', function(){
    var url = $(this).attr('href');
    var height = $('#div-id(B)').height();
    var width = $('#div-id(B)').width();

    $('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );

    return false;
});

// This will unbind the click action for a tags inside a div with id #sub-b
$('#sub-b a').off('click');

有一点需要注意,如果你使用事件委托,那么就不能以这种方式对内部div使用off。

working fiddle

see jQuery off documentation

答案 1 :(得分:0)

尝试

  

:不是选择器

$('.div-class(A) a:not(disabledLinkSelctor)').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});

答案 2 :(得分:0)

如果你想在第一次点击它时删除该事件,那么你可以解除绑定:

$('.div-class(A) a').click(function(){
    var url = $(this).attr('href');
    var height = $('#div-id(B)').height();
    var width = $('#div-id(B)').width();
    $('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
    $(this).off("click");
    return false;
});

有关关闭的详细信息:http://api.jquery.com/off/

如果您只想让div中的某些链接可点击,只需添加一个合适的类并按其过滤:

$('.div-class(A) a.opensUpDivB').click(function(){
    var url = $(this).attr('href');
    var height = $('#div-id(B)').height();
    var width = $('#div-id(B)').width();
    $('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
    return false;
});