删除 html class 不会使用 jQuery removeClass 分离已删除的 class 功能
Removing a html class won't detach removed class functionality using jQuery removeClass
我需要禁用一个手风琴元素,直到用户在另一个手风琴元素中输入一些内容。我有 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>
...
它还有很多其他元素,但要说明一点,我认为这就足够了。
请注意,一般 link 有一个 "disabled",旨在防止用户在未先执行某些操作的情况下导航到 HTML 的那部分。目前正在这样做:
$(".disabled").click( function(){
$( "#subject_link").click()// Scroll screen to target element
alert("You need to enter subject ID first");
});
以上代码提醒用户先输入ID,然后returns他到相应的手风琴元素。然后,当用户输入主题 ID 时,我触发 class 删除:
if($("#tab0").valid()){
$.post( url , values);
// alert( "Data Loaded: " + str );
$("#general_link").removeClass("disabled");
$("#general_link").click();
上面的操作成功地删除了 class(不再出现的标记 "class=disabled" 和样式暗示)但是点击现在未禁用的元素仍然会触发“.已禁用”(提醒用户缺少 ID 并导航到相应的元素)。
我在这里错过了什么???
您必须使用 .off()
method 来分离该功能:
$("#general_link.disabled").off("click");
$("#general_link").removeClass("disabled");
或者使用事件委托,这样当事件发生时,目标元素将再次 re-checked 针对选择器。所以改用这个:
$(document).on("click", ".disabled", function(){
$( "#subject_link").click()// Scroll screen to target element
alert("You need to enter subject ID first");
});
注意: 这里的 document
可以是 .disabled
元素的任何 parent。最接近 parent 的 ckeck 越快。 (我不知道你的 HTML 的其余部分,所以如果你在 DIV 中有那个 UL 可以选择然后在上面的代码中放置那个选择器而不是 document
)
我需要禁用一个手风琴元素,直到用户在另一个手风琴元素中输入一些内容。我有 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>
...
它还有很多其他元素,但要说明一点,我认为这就足够了。
请注意,一般 link 有一个 "disabled",旨在防止用户在未先执行某些操作的情况下导航到 HTML 的那部分。目前正在这样做:
$(".disabled").click( function(){
$( "#subject_link").click()// Scroll screen to target element
alert("You need to enter subject ID first");
});
以上代码提醒用户先输入ID,然后returns他到相应的手风琴元素。然后,当用户输入主题 ID 时,我触发 class 删除:
if($("#tab0").valid()){
$.post( url , values);
// alert( "Data Loaded: " + str );
$("#general_link").removeClass("disabled");
$("#general_link").click();
上面的操作成功地删除了 class(不再出现的标记 "class=disabled" 和样式暗示)但是点击现在未禁用的元素仍然会触发“.已禁用”(提醒用户缺少 ID 并导航到相应的元素)。
我在这里错过了什么???
您必须使用 .off()
method 来分离该功能:
$("#general_link.disabled").off("click");
$("#general_link").removeClass("disabled");
或者使用事件委托,这样当事件发生时,目标元素将再次 re-checked 针对选择器。所以改用这个:
$(document).on("click", ".disabled", function(){
$( "#subject_link").click()// Scroll screen to target element
alert("You need to enter subject ID first");
});
注意: 这里的 document
可以是 .disabled
元素的任何 parent。最接近 parent 的 ckeck 越快。 (我不知道你的 HTML 的其余部分,所以如果你在 DIV 中有那个 UL 可以选择然后在上面的代码中放置那个选择器而不是 document
)