jQuery替换为使用变量

时间:2014-10-07 14:46:44

标签: javascript jquery sharepoint

我正在开发一个动态SharePoint 2010表单,该表单利用jQuery在用户选择下拉列表后显示图像。用户在SharePoint列表中选择日历项的名称,并且.replaceWith()插入一个div,其中包含指向虚拟输入单行文本的正确图像的链接。这在每次第一个对象上都能正常工作,但因为没有回发,所以它不会在.change()事件上循环。有谁知道如何实现这一目标。重新加载表单将是SP设计的麻烦。

以下是一些代码:

    $(document).ready(function(){
    var iCal1row = $("nobr:contains('Calendar 1 Image')").parent('h3').parent('td').parent('tr');
    var iCal2row = $("nobr:contains('Calendar 2 Image')").parent('h3').parent('td').parent('tr');
    var iCal1 = $("nobr:contains('Calendar 1 Image')").parent('h3').parent('td').next('td').children('span').find(':input');
    var iCal2 = $("nobr:contains('Calendar 2 Image')").parent('h3').parent('td').next('td').children('span').find(':input');

    $("select[title*='Calendar 2 Name']").change(function()
    {
        var Cal2Val = $("select[title*='Calendar 2 Name']").val();
        var Cal2img = ''

        switch(Cal2Val)
        {
            case "0":
                iCal2row.hide();
                break;

            case "1":   
                Cal2img = 'http://www.website.org/images/desk_n2556.jpg';
                iCal2row.show();
                iCal2.replaceWith('<div class="iCal2"><img src="' + Cal2img + '"/></div>');
                break;

            case "2":   
                Cal2img = 'http://www.website.org/images/desk_n20241.jpg';
                iCal2row.show();
                iCal2.replaceWith('<div class="iCal2"><img src="' +Cal2img + '"/></div>');
                break;
}

    }); 
});

非常感谢任何见解

1 个答案:

答案 0 :(得分:0)

问题是在使用iCal2.replaceWith()之后,变量iCal2不再引用DOM中的元素。它仍然指的是已从DOM中删除的原始SPAN。

重新分配变量以引用新元素:

iCal2.replaceWith(...);
iCal2 = $("nobr:contains('Calendar 2 Image')").parent('h3').parent('td').next('td').children('span').find(".Cal2");