首页 > 解决方案 > jQuery .attr() 未在 HTML 中设置后设置值并在之前删除此属性

问题描述

在我的脚本中,我一直需要在 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', "" );
} 

输出

在控制台中 在此处输入图像描述

HTML 检查器 在此处输入图像描述

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

有人有解释吗?

标签: jqueryhtmldomattr

解决方案


我发现发生了什么...

由于脚本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 Inspector 被更新:

在此处输入图像描述


推荐阅读