Javascript jQuery已创建<;a>;IE中未触发链接

Javascript jQuery已创建<;a>;IE中未触发链接,javascript,jquery,html,internet-explorer,onclick,Javascript,Jquery,Html,Internet Explorer,Onclick,我正在尝试使用jQuery创建一个自定义的可点击菜单,最终产品在除IE8之外的任何地方都可以正常工作。。。当我点击链接时,什么也没发生。但是,如果我打开调试器并刷新onclick属性,那么它在IE中可以正常工作。因此,IE似乎没有“看到”jQuery创建的onclick?这可能吗 以下是一些示例代码: var props; props['views'] = [ 'item1', 'item2', 'item3' ]; 从另一个链接保存onclick并将其转移到菜单 props['onclick

我正在尝试使用jQuery创建一个自定义的可点击菜单,最终产品在除IE8之外的任何地方都可以正常工作。。。当我点击链接时,什么也没发生。但是,如果我打开调试器并刷新onclick属性,那么它在IE中可以正常工作。因此,IE似乎没有“看到”jQuery创建的onclick?这可能吗

以下是一些示例代码:

var props;
props['views'] = [ 'item1', 'item2', 'item3' ];
从另一个链接保存onclick并将其转移到菜单

props['onclick'][i] = $(this).closest('a').attr('onclick');
后来

for (var i in props.views) {
    var a = $('<a></a>');        

    // override the class from props.linkclass
    var cssclass = 'myMenu';
    // override the onclick from props.onclick[i]
    var onclick = props.onclick[i] + ';highlightDynamicMenu(this);';
    a.attr( {
        'class' : cssclass,
        'href' : 'javascript:void(0);',
        'onclick' : onclick }
    );
    a.append(props.views[i]); // name of the link

    menu.append(a);
}
for(props.view中的变量i){
变量a=$('
现在,正如我之前提到的,如果我打开调试器,刷新链接,说删除“javascript:”并点击enter,那么IE8将“看到”链接


这里到底是什么问题?>。您不应该以这种方式操作
onclick
attribte。内联处理程序通常是个坏主意,因此像这样对它们进行黑客攻击更糟糕

相反,您应该使用事件处理程序。在这种情况下:

a.click(highlightDynamicMenu);

您可以保留
attr…“onclick”:props.onclick[i]
,因为它看起来像是在传递字符串,但实际上你应该尝试将其作为匿名函数并传递。

你不应该以这种方式操纵
onclick
attribte。内联处理程序通常是一个坏主意,所以像这样对它们进行黑客攻击更糟糕

相反,您应该使用事件处理程序。在这种情况下:

a.click(highlightDynamicMenu);

您可以保留attr…“onclick”:props.onclick[i],因为它看起来像是在传递字符串,但实际上您应该尝试将其作为匿名函数并进行传递。

通过消除IE与其他人的大多数不同行为,代码中没有任何问题。 msdn上报告了类似的问题

像这样试试 假设
props.onclick[i]
sarts与
javascritp:
符合您的示例
onclick=“javascript:show('div1208','div1208',event);highlightDynamicMenu(this);”


在大多数情况下,IE的行为都与其他IE不同,从而消除了代码中的任何问题。 msdn上报告了类似的问题

像这样试试 假设
props.onclick[i]
sarts与
javascritp:
符合您的示例
onclick=“javascript:show('div1208','div1208',event);highlightDynamicMenu(this);”



为什么要使用属性而不是直接使用处理程序?你可以使用jQuery。你为什么要用艰难的方式来做每件事?等等,什么?我用的是艰难的方式?我用的是jQuery.FYI,你不需要onclick中的
javascript:
。你只需要在
href
中使用它。我确实删掉了
javascript:
pre很明显,但这在这种情况下没有帮助。
javascript:
是从我保存链接的地方直接复制的,链接是由其他人的代码生成的,这就是为什么我尽可能保持它的完整性。为什么要使用属性而不是直接使用处理程序?你可以使用jQuery。你为什么要做所有事情d方式?等等,什么?我在用很难的方式做?我在使用jQuery.FYI,你不需要onclick中的
javascript:
。你只需要在
href
中使用它,我以前确实删掉了
javascript:
,但在这种情况下没有帮助。
javascript:
是直接从我保存链接的地方复制的h是由其他人的代码生成的,这就是为什么我尽可能保持它的完整性。'href':'onclick',这是什么意思?'href':'onclick',这是什么意思?我不能使用click,因为我不仅仅调用单个函数,我还需要调用保存在
props.onclick[I]
中的函数,另外还有我的
highlightDynamicMenu()
事实上,我认为问题在于
事件
,在我需要调用
showMyDiv('div1208','div1208',event)
的子函数中,如果我使用
a,我无法将
事件
传递给该函数。click()
。有没有办法将事件传递过来?因此解决方案是使用
。click()
,然而,我不得不使用一种变通方法来绕过
事件的传递问题,我最终将
null
作为
event
传递,好消息是旧函数实际上不再使用
事件了……然而,知道@Kolink的解决方案如何以这种方式传递变量还是很好的。我不能t使用click,因为我不仅仅调用单个函数,我还需要调用保存在
props中的函数。单击[i]
,再加上我的
highlightDynamicMenu()
实际上,我认为问题在于我需要调用的子函数
showMyDiv('div1208','div1208',event)中的
事件
,如果我使用
a,我无法将
事件
传递给该函数。单击()
。是否有方法将事件传递给该函数?因此解决方法是使用
。单击()
,然而,我不得不使用一种变通方法来绕过
事件的传递问题,我最终将
null
作为
event
传递,好消息是旧函数实际上不再使用
事件了……不过,知道@Kolink的解决方案如何以这种方式传递变量还是不错的。
var onclick = props.onclick[i] + ';highlightDynamicMenu(this);';
    a.attr( {
        'class' : cssclass,
        'href' : onclick, // On Click variable value which will be something like javascript:show('div1208', 'div1208', event);highlightDynamicMenu(this);
         }
    );
    a.append(props.views[i]);