jQuery .attr()在设置值并在删除此属性之前未在HTML中设置

时间:2019-07-17 18:38:32

标签: jquery html dom attr

在我的脚本中,我需要所有时间在HTML表单项上设置属性,以保存上一个数据并评估下一个数据,然后再执行ajax请求。

关于data-next-*属性,像这样完成脚本之后,始终都会删除它们:

function actualizeTmpDataAndSpinner (){
       //Notice : "Value" is position value
       var a_dataValueKeys = [ "value", "is-condition", "condition-type", "condition-selector" ];

       for( var k=0 ; k < a_dataValueKeys.length; k++ ){
           $("*[data-previous-" + a_dataValueKeys[k] + "]").removeAttr( "data-previous-" + a_dataValueKeys[k] );
           $("*[data-next-" + a_dataValueKeys[k] + "]").each( function () {
           var dataNextValue = $(this).attr("data-next-" + a_dataValueKeys[k] );
           $(this).attr("data-" + a_dataValueKeys[k], dataNextValue );
       });
       $("*[data-next-" + a_dataValueKeys[k] + "]").removeAttr("data-next-" + a_dataValueKeys[k] );
   }
   $(".h4a-spinner-wrapper").remove();
}

由于某些原因,在为data-next-*设置了值并将其删除之后,此后的以下代码行仅在DOM中设置了属性,而在HTML中不再设置了属性:

function resetConditionForNext( $currentfieldConditionWrapper ) {
    $currentfieldConditionWrapper.attr('data-next-is-condition', "false" );
    $currentfieldConditionWrapper.attr('data-next-condition-type', "" );
    $currentfieldConditionWrapper.attr('data-next-condition-selector', "" );
} 

输出

在控制台中 enter image description here

HTML检查器 enter image description here

为什么data-next-is-conditiondata-next-condition-typedata-next-condition-selector在HTML检查器中不可见?

有人得到了解释吗?

1 个答案:

答案 0 :(得分:1)

我发现发生了什么事...

在脚本最后删除data-next-*时,为了检查新属性,我试图像这样使用alert("stop");

if( !$conditionCheckbox.is(":checked") ){
    resetConditionForNext( $currentConditionWrapper );
    console.dir( $currentConditionWrapper );
    alert("stop");
    break;
}

但是alert("stop");是在更改HTML Inspector之前运行的。

如果我这样写一个未知的JavaScript词,例如exit;而不是alert("stop");

if( !$conditionCheckbox.is(":checked") ){
    resetConditionForNext( $currentConditionWrapper );
    console.dir( $currentConditionWrapper );
    exit;
    break;
} 

脚本已锁定,HTML检查器已更新:

enter image description here