Javascript jQuery按属性定位元素并替换其HTML

Javascript jQuery按属性定位元素并替换其HTML,javascript,jquery,Javascript,Jquery,JS: HTML: 所以单击,找到的元素中的文本应该替换为Hello 我如何才能做到这一点?首先,您可以简单地: $'.translate'。单击,函数{ $[uloc].htmlhellooooo!; }; 法国 英语 错误很简单。当您引用$this.parent.htmlhellooooo!;,这指向您正在迭代的属性。为了避免这种情况,您可以从外部循环跟踪元素,并在访问父元素时使用它: $'.translate'。单击,函数{ $*.eachfunction{ //***记住该元素,稍后

JS:

HTML:

所以单击,找到的元素中的文本应该替换为Hello

我如何才能做到这一点?

首先,您可以简单地:

$'.translate'。单击,函数{ $[uloc].htmlhellooooo!; }; 法国 英语
错误很简单。当您引用$this.parent.htmlhellooooo!;,这指向您正在迭代的属性。为了避免这种情况,您可以从外部循环跟踪元素,并在访问父元素时使用它:

$'.translate'。单击,函数{ $*.eachfunction{ //***记住该元素,稍后使用 var元素=这个; $.eachthis.attributes,函数{ 如果此.name.indexOf'uloc'==0{ $element.parent.htmlhellooooo!; console.logthis.name+'的值为:'+this.value; } }; }; }; 法国 英语
您可以使用jquery的属性选择器来查找具有属性uloc的所有元素并替换其文本。请参阅下面的代码

$function{ $'.translate'。单击,函数{ $[uloc]。每个函数{ $this.textHellooooo!; }; }; }; 法国 英语
我们不需要迭代属性为uloc的所有元素。jQuery将为我们做这件事。最简单的解决方案可以是-

$'.translate'。单击,函数{ $[uloc].htmlhellooooo!; }; 法国 英语
每个函数都有两个参数:索引和要迭代的元素。您可以使用该元素修改html


你的问题不清楚?什么是uloc?当有人点击弗兰?AIS时,实际上需要发生什么?如果你要使用自定义属性,你应该考虑使用正确的自定义属性形式来保证HTML的有效性:这里有一个问题:$Test.html本地化。我需要从数组中选择uloc的内容。@Borsn我需要更多的上下文,但eval很可能不是必需的。我猜您在选择正确的本地化文本时遇到了问题-那么这些文本是什么格式的?除非所有的翻译文本都是HELLOOO,否则您需要使用uloc迭代这些元素,如@BhushanKawadkar所示。在一个命令中将所有元素文本更改为Hellooo(如示例中所示)并没有多大用处,IMO.@James问题只询问如何用hello替换。因此,其他任何事情目前都超出了范围。翻译的需要可以从注释和一些标识符中猜出来,但OP从未在问题中说明。@Sirko你完全正确。我情不自禁地在字里行间读到他们的意思,而不是他们的要求。由于您只需多花一点心思和一行额外的代码就可以完成这两项任务,因此我将采用解决方案。这是可行的。但我这里有一个问题:$this.html本地化.eval$this.attruloc;我需要从数组中选择uloc的内容。@Borsn我不确定您指的是哪个数组。如果您可以使用相关代码编辑/更新问题,这将有所帮助。或者,如果这是一个单独的问题,创建一个新的问题,并共享链接。例如,uloc=terms\u of\u service需要在这里作为选择器const en={terms\u of\u service:terms of service,privacy\u policy:privacy policy,}@Borsn所以您可以执行类似en[$element.attruoc]的操作where element是我先前保留的变量。@James我会处理它。谢谢
$('.translate').on('click', function(){

    $("*").each(function() {

        $.each(this.attributes, function() {            
            if (this.name.indexOf('uloc') == 0) {

                $(this).parent().html("HELLOOOOOOOO!");

                console.log(this.name + ' has the value: ' + this.value);
            }
        });
    });

});
<ul>
    <li><a href="" uloc="report_problem">Report a problem</a></li>
    <li><a href="" uloc="privacy_policy">Privacy Policy</a></li>
    <li><a href="" uloc="terms_of_service">Terms of Service</a></li>
</ul>

<ul>
    <li><a class="translate" locale="fr">Français</a></li>
    <li><a class="translate" locale="en">English</a></li>
</ul>
$('.translate').on('click', function(){
    $('[uloc]').each(function(index, element)  {
        $(element).html("HELLOOOOOOOO!");                       
    });
});