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

标签 javascript jquery html css jquery-ui-accordion

我需要禁用一个 Accordion 元素,直到用户在另一个 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 并导航到相应的元素)。

我在这里错过了什么???

最佳答案

或者使用事件委托(delegate),这样当事件发生时,目标元素将根据选择器再次检查。所以改用这个:

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

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

关于javascript - 删除 html 类不会使用 jQuery removeClass 分离已删除的类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912443/

相关文章:

javascript - 你知道任何显示如何使用 Canvas 绘制思维导图的示例代码吗?

javascript - 如何访问中继器内的外部元素?

javascript - js中添加两个变量

jquery - 查找包含特定文本的标签并添加类

html - 在 Jekyll 的 CSS 中使用 liquid tempting 以每页为基础调整 div 的背景颜色

html - 如何将内容保存在 UIWebView 中以便在下次启动时更快地加载?

javascript - Node q 循环遍历数组并追加数据

javascript - 如何设置 Origin 请求 header

javascript - 等待过渡在 puppeteer 操作中结束

php - 在客户端使用网络摄像头录制视频并上传到php服务器