0

当我单击链接时,它会在获得此类后得到一个名为 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一个函数

4

3 回答 3

3

如果不看更多代码就很难分辨,但一目了然

改变:

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

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

hasClass 中的大写 C

此外,根据您的编辑,现在您正在检查li文档中的所有元素以查找所选类:

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

如果我明白你在问什么,你应该只检查包装点击的 li 。所以改为这样做(这假设 idPlanta 是对单击的链接的 js 引用,这就是您正在尝试的样子,但不能确定,因为您的代码没有在 js fiddle 中编译时我试图建立它),

if ($(idPLanta).parent().hasClass("selected")) {
    return false;
}
于 2013-08-23T20:17:48.160 回答
1

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


您的问题是您声明函数的位置:

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

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

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

这将从函数返回“false”,这将取消自然点击事件。

于 2013-08-23T20:21:21.627 回答
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>
于 2013-08-23T20:22:48.803 回答