选中后禁用链接

时间:2013-08-23 20:13:31

标签: javascript jquery

当我点击链接时,它获得一个名为selected的类,它获得此类之后需要被禁用,直到它丢失“已选中”类但它不会影响其他li没有类或类“无“

    function abrePlanta(idPlanta, desc, image){
    h = screen.height;

    if ($('li').hasClass("selected")) {
        return false;
    }

    $('#image_preview').html('<img src="../interface_test/images/loading.gif" />');
    $('ul li.selected').removeClass('selected').addClass('none');
    $(this).closest('li').addClass('selected').removeAttr("disabled");

    if(h >= 960){
       size = 100;
    } else if(h < 960){
        size = 90;
    }

   $.get('2.php', { id_planta: idPlanta, size: size }, function(img){
        $('#image_preview').html(img);
   });
   $('#description').html(desc);
   $("#imagezoom").attr("src", "../../images/plantas/sso/" + image);
   return false;
}

<li><a href='javascript:void(0);' onclick="return abrePlanta.call(this, 2, "text", "image.jpg")"></a></li>

它不起作用event.preventDefault

我正在使用带有函数的onclick

3 个答案:

答案 0 :(得分:3)

很难说没有看到更多的代码,但一目了然

变化:

if($(this).hasclass('selected')){

if($(this).hasClass('selected')){

hasClass中的大写C

此外,根据您的修改,您现在正在检查所选类的文档中的所有li元素:

if ($('li').hasClass("selected")) {
    return false;
}

如果我明白你在问什么,你应该只检查点击那个点击的那个。所以做这样的事情(这假设idPlanta是对点击的链接的js引用,这是你正在尝试的,但不能确定,因为你的代码没有在js小提琴编译时我试图建立它),

if ($(idPLanta).parent().hasClass("selected")) {
    return false;
}

答案 1 :(得分:1)

这是一个JSFiddle,可以帮助你解决一些问题......

<小时/> 您的问题是您声明函数的地方:

<a href="#" onclick="myfunction()">test2</a>

这将调用函数(返回true / false),但它不会对它做任何事情。要取消事件冒泡,您需要返回函数的结果:

<a href="#" onclick="return myfunction()">test2</a>

这将返回&#34; false&#34;从函数中取消自然点击事件。

答案 2 :(得分:0)

if($(this).hasClass('selected')){
    $(this).attr("disabled","disabled");
    return false;
} 
else {
    return true;
}

$('ul li.selected').removeClass('selected').addClass('none');
$(this).closest('li').addClass('selected').removeAttr("disabled");

<li><a href="#" onclick="function()">test</a></li>
<li><a href="#" onclick="function()">test2</a></li>