我需要禁用手风琴元素,直到用户在另一个手风琴元素中输入一些东西。我有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并导航到相应的元素。)
我在这里失踪了什么?
答案 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
)