javascript替换字符串可继续

时间:2016-03-24 06:03:26

标签: javascript jquery

我有一个替换字符串的代码。这是我的PHP代码创建的HTML。

...
foreach ($notes as $note) {
                echo '<li><input name="noteTypeID" type="radio" class="noteTypeID" value="'.$note['NOTETYPEID'].'"></li>';
            }
...
foreach (...) { 
...
    echo '<li class="getshrtcode">[srms_more_info id="'.$cnt.'" instanceID="'.$val_id.'" type="'.$val_type.'" noteCodeID="" planID=""]</li>';                               
...
                }

我的脚本是这样的:

jQuery(document).ready(function(){
    var noteTypeID = null;
    var planID = null;
    jQuery('.noteTypeID').click(function() {
        noteTypeID = jQuery(this).val();
        planID = prompt("Enter a Template planID value from axcelerate");

        jQuery('.getshrtcode').each(function(){
            jQuery(this).text(jQuery(this).text().replace('noteCodeID=""', 'noteCodeID="'+ noteTypeID +'"'));
            jQuery(this).text(jQuery(this).text().replace('planID=""', 'planID="'+ planID +'"'));
        });

    });

});

第一次改变是好的,但下一次没有。我发现它无法重新分配.getshrtcode文本,因为planIDnoteCodeID字符串具有值。是否可以再次转换noteCodeID="" planID=""

1 个答案:

答案 0 :(得分:0)

您正在尝试使用jquery设置非DOM实体,这是不可能的。当你有一个模板引擎来生成HTML时,模板代码会被执行并在任何javascript加载之前给出结果,因此你不能设置模板属性,除非模板引擎本身为你提供了一种机制来实现这一点。

如果您真的希望客户指定某个模板计划ID以向他展示特定的内容,则需要通过AJAX调用加载您的页面,您可以通过noteCodeID & planID向服务器发送请求并回复由于自定义模板引擎执行而产生的所需HTML。

如果HTML中有自定义属性要使用jquery设置,那么您只需使用attr函数:

$('#foobar').attr('foo','bar');