如您所见,我的HTML包含对' 0'的多个引用。我需要将这些更改为' 1'。
但是,我的jQuery还没有工作。
jQuery(".create-new-location").click(function() {
jQuery("#header-logo").html().replace(/\[0\]/g, '['+(1)+']');
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="header-logo" class="header-title location-header-0 title-edit-header" data-row-id="location-header-0" title="Location name (for your reference)">
<div class="input-selection title-edit-header">
<div class="text-input">
<input class="option_textbox col-sm-12 change-width title-edit" placeholder="Location name (for your reference)" value="" type="text" name="bp_theme_options[social][map][locations][0][location_name]">
</div>
</div>
<div class="open-block pencil-edit" data-row-id="location-header-0"></div>
</div>
&#13;
答案 0 :(得分:3)
你必须像这样设置html
jQuery(".create-new-location").click(function() {
var the_html = jQuery("#header-logo").html().replace(/\[0\]/g, '['+(1)+']');
jQuery("#header-logo").html(the_html);
});
但这不是一个好习惯!!
如果您只需要更改<input>
的属性,为什么要更改整个#header-logo
,对吧?当您重新绘制这样的html时,冒险会丢失事件处理程序绑定到刚刚重新绘制的元素。
jQuery(".create-new-location").click(function() {
var elements = jQuery("#header-logo").find('input[name]'); /*all input with name*/
elements.each(function(el){
var the_name = el.attr('name').replace(/\[0\]/g, '['+(1)+']');
el.attr('name', the_name);
});
});
答案 1 :(得分:1)
重新制作html是never a good idea。
如您所见,我的HTML包含对&#39; 0&#39;的多个引用。我需要将这些更改为&#39; 1&#39;。
您使用的方法,甚至是此处接受的答案,都不会修改包含其中几个引用的id="header-logo"
的包含div。此外,在验证案例中简单地用新复制的dom元素替换现有的dom元素存在很多问题(例如,这可能会破坏您的验证)。
您应该使用的方法是专门针对包含这些引用的属性,然后仅修改它们。这是一种通用方法,它查看所有属性并将[0
(0是之前的值)的出现修改为[1
(1为after的值)以及修改{的出现次数{1}}(在= 0之前)到-0
(在= 1之后)。
这将阻止从元素中删除任何现有的事件处理程序,以及与regexing直接html相关联的许多其他问题,然后用该结果替换dom元素。
-1
&#13;
$.fn.indexUpdate = function(before,after){
$("*",this).add(this).each(function(){
$(this.attributes).each(function(){
this.value = this.value.replace(new RegExp('\\b\\-'+before+'\\b','g'), '-'+after);
this.value = this.value.replace(new RegExp('\\['+before, 'g'), '['+after);
});
});
};
$("#header-logo").indexUpdate(0,1);
&#13;
答案 2 :(得分:0)
此语句jQuery("#header-logo").html().replace(/\[0\]/g, '['+(1)+']');
检索id为header-logo
的元素内的html,并将html字符串中的每个0
替换为1
但它没有' t再次将修改后的字符串分配给元素因此您可能需要使用以下代码。
jQuery("#header-logo").html(jQuery("#header-logo").html().replace(/\[0\]/g, '['+(1)+']'));
答案 3 :(得分:0)
试试这个:它将取代所有存在的&#39; 0&#39;用&#39; ##&#39;
$(".create-new-location").click(function() {
$("#header-logo").html().replace(/0/gi, '##')
});