删除html类不会使用jQuery removeClass分离删除的类功能

时间:2017-01-28 17:05:37

标签: javascript jquery html css jquery-ui-accordion

我需要禁用手风琴元素,直到用户在另一个手风琴元素中输入一些东西。我有HTML的这个设置:

       ...
        <ul>
          <li><a id="subject_link" href="#subject"> Paciente </a></li>
          <li><a id="general_link" href="#general" class="disabled">Información General</a></li>
        </ul>
       ...

它有许多其他元素,但为了说明一点,我认为这就足够了。

请注意,常规链接具有“禁用”,旨在阻止用户首先导航到HTML的该部分而不进行任何操作。目前这样做是这样的:

  $(".disabled").click( function(){
$( "#subject_link").click()// Scroll screen to target element
alert("You need to enter subject ID first");
 });

上述代码提醒用户先输入ID并将其返回到相应的accordion元素。然后,当用户输入主题ID时,我会触发类删除:

  if($("#tab0").valid()){
    $.post( url , values);
    // alert( "Data Loaded: " + str );
    $("#general_link").removeClass("disabled");
    $("#general_link").click();

上面成功删除了类(标记“class = disabled”,不再出现,样式表明)但点击现在未禁用的元素仍会触发“.disabled”的功能(提醒用户)丢失ID并导航到相应的元素。)

我在这里失踪了什么?

2 个答案:

答案 0 :(得分:1)

您必须使用.off() method分离该功能:

$("#general_link.disabled").off("click");
$("#general_link").removeClass("disabled");

答案 1 :(得分:1)

或者使用事件委托,以便在事件发生时,将再次针对选择器重新检查目标元素。所以请改用它:

$(document).on("click", ".disabled", function(){
    $( "#subject_link").click()// Scroll screen to target element
    alert("You need to enter subject ID first");
});

注意: document此处可能是.disabled元素的任何父级。父亲最近的是ckeck会越快。 (我不知道你的HTML的其余部分,所以如果你在可以选择的DIV中有UL,那么在上面的代码中放入选择器而不是document