如何使用Javascript更新onclick事件(确保它在IE 6+;中工作)

如何使用Javascript更新onclick事件(确保它在IE 6+;中工作),javascript,sharepoint,sharepoint-2010,dom-events,Javascript,Sharepoint,Sharepoint 2010,Dom Events,我有一个动态生成的“锚定标签”,如下所示(因此我无法控制内容)。我添加了“id”属性,实际的标记不包含id标记,它只是为了演示,所以我可以使用jsfiddle测试任何Javascript <a title="719132 bytes" id="ah" onclick="DispEx(this, event, 'TRUE', 'FALSE', 'FALSE', 'SharePoint.OpenDocuments', '0', 'SharePo

我有一个动态生成的“锚定标签”,如下所示(因此我无法控制内容)。我添加了“id”属性,实际的标记不包含id标记,它只是为了演示,所以我可以使用jsfiddle测试任何Javascript

<a title="719132 bytes" id="ah" onclick="DispEx(this, event, 'TRUE', 'FALSE', 'FALSE', 'SharePoint.OpenDocuments', '0', 'SharePoint.OpenDocuments', '', '1\u002fPMS\u002f_layouts\u002fWordViewer.aspx?id=\u002fPMS\u002my.docx', '', '67', '0', '0', '0x400000300c231061'); return false;"
    href="/_layouts/download.aspx?SourceUrl=/documents/my.docx"
    jQuery16206020211467509253="188">

如何更新“锚定标记”的
onclick
事件?

为什么选择复杂方式?它们只是一个函数的两个参数。使用两个变量作为参数修改其值,如本例所示:

<input type='button' value="your anchor" onclick="YourFuntion(arg1,arg2);return false;"/>
<input type='button' value='Try it' onclick='myfunction()'/>
<SCRIPT LANGUAGE="JavaScript">
<!--
var arg1 = 'SharePoint.OpenDocuments', arg2='SharePoint.OpenDocuments';
function YourFuntion(a,b)
{
alert(a);
alert(b);
}
function myfunction()
{
 arg1 = 'SharePoint.OpenDocuments.3';
 arg2 = " ";
}
//-->
</SCRIPT>

这可能不是最理想的解决方案,但希望它能展示JQuery的替代概念。您可以从锚标记中删除跟踪/管理文本参数的复杂性,并将其转换为JQuery(javascript)

JQuery中的单击事件:

<script language="JavaScript">
    $('#ah').bind('click', function() {

        var sharePoint = $(this).attr('parm-data');
        var sharePointParm1 = '';
        var sharePointParm2 = '';

        if("SharePoint.OpenDocuments" == sharePoint) {
            sharePointParm1 = 'SharePoint.OpenDocuments.3';
            $(this).attr('parm-data') = 'SharePoint.OpenDocuments.3';
        } else {
            sharePointParm1 = 'SharePoint.OpenDocuments';
            sharePointParm2 = sharePointParm1;
            $(this).attr('parm-data') = sharePointParm1;
        }

        DispEx(this, event, 'TRUE', 'FALSE', 'FALSE', sharePointParm1, '0', sharePointParm2, '', '1\u002fPMS\u002f_layouts\u002fWordViewer.aspx?id=\u002fPMS\u002my.docx', '', '67', '0', '0', '0x400000300c231061'); 
        return false;"
    });
</script>

$('#ah').bind('click',function(){
var sharePoint=$(this.attr('parm-data');
var sharePointParm1='';
var sharePointParm2='';
如果(“SharePoint.OpenDocuments”==SharePoint){
sharePointParm1='SharePoint.OpenDocuments.3';
$(this.attr('parm-data')='SharePoint.OpenDocuments.3';
}否则{
sharePointParm1='SharePoint.OpenDocuments';
sharePointParm2=sharePointParm1;
$(this.attr('parm-data')=sharePointParm1;
}
DispEx(此事件,'TRUE'、'FALSE'、'FALSE'、sharePointParm1、'0'、sharePointParm2、'1\u002fPMS\u002f_layouts\u002fWordViewer.aspx?id=\u002fPMS\u002my.docx'、'67'、'0'、'0x400000300c231061');
返回false;”
});
然后是修改过的锚标签:

<a title="719132 bytes" id="ah" parm-data="SharePoint.OpenDocuments"
        href="/_layouts/download.aspx?SourceUrl=/documents/my.docx"
        jQuery16206020211467509253="188">


非常感谢您的帮助。很抱歉没有提供完整的信息。锚定标记是动态生成的,我无法控制。这是由SharePoint自动生成的,因此请记住如何更改onclick事件。如果JQuery低于1.7,您可以使用1.7和higher。这将允许单击事件触发动态生成的链接。非常感谢您的帮助。抱歉没有提供完整信息。锚定标记是动态生成的,我无法控制。这是由SharePoint自动生成的,因此请记住如何更改onclick事件。
<a title="719132 bytes" id="ah" parm-data="SharePoint.OpenDocuments"
        href="/_layouts/download.aspx?SourceUrl=/documents/my.docx"
        jQuery16206020211467509253="188">