我正在开发一个动态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;
}
});
});
非常感谢任何见解
答案 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");