单击时更新脚本标记属性

时间:2013-05-26 14:50:26

标签: jquery sharepoint

我正在构建一个仅为Office365使用客户端脚本的组件。 它从列表中获取一些值,并在下拉列表中显示它们,到目前为止一直很好。

然后,通过单击链接,脚本将设置脚本标记的ID和SRC。脚本标记加载并显示来自其他站点的小部件。

但是,这仅在您第一次触发链接的onclick事件时起作用。下次尝试此操作时,脚本标记将不再更新。

我注意到jquery第一次定位脚本标记时,它上面有一个[0]数组,其中SRC和ID属性可以正确更新。

第二次触发onclick事件时,它确实找到了脚本标签(我猜)但是标签没有相同的[0]数组,我没有看到SRC和ID属性在浏览器调试器中得到更新

任何人都知道为什么第二次点击时对象不相似,或者如何让它在每次点击时更新脚本标签,而不仅仅是第一次?

所有帮助表示赞赏!

以下是代码:

/* triggered on click of a link */
function OnUserSelectionMade(selection)
{
    if (!((selection == null) || (selection == undefined)))
    {         
        var WolframWidgetURL = "https://www.wolframalpha.com/widget/widget.jsp?id=";
        var ScriptTagID = "WolframAlphaScript";

        var WidgetID = GetDDLSelection();

        WolframWidgetURL = WolframWidgetURL + WidgetID;
        ScriptTagID = ScriptTagID + WidgetID; 

        /* works only the first time you click */
        var aScriptTag = $('script[id*="WolframWidgetScriptTag"]');
        aScriptTag.attr("id", ScriptTagID);
        aScriptTag.attr("src", WolframWidgetURL);
    }
}

/* Gets the currently selected item in the dropdown's value */
function GetDDLSelection()
{
    var ddlWidgetSelector = $('#ddlWidgetSelector option:selected');

    return ddlWidgetSelector.val();
}


$(document).ready(function () {
    window.g_WidgetListItems = null;

    ExecuteOrDelayUntilScriptLoaded(FillDropDownList, "sp.js");

    // attach event for selecting an item from the drop down list
    $("#aWidgetSelectorLink").click(function () {
        OnUserSelectionMade(this);
    });    
});

1 个答案:

答案 0 :(得分:0)

您正在设置脚本ID: var ScriptTagID = "WolframAlphaScript";

所以第二次,这行返回jquery空对象:

var aScriptTag = $('script[id*="WolframWidgetScriptTag"]');

基本上,你不应该修改脚本ID。

你可以改用:

var aScriptTag = $('script[id*="Wolfram"]');

但我无法理解这一点?!