我有这个方法:
function replaceRightClickIcefacesMethod() {
var oldName = jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu");
oldName = oldName.replace('Ice.Menu.contextMenuPopup', 'contextMenuPopupUpdated');
jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu", oldName);
}
我不明白为什么Firebug会报道:
oldName.replace is not a function
你看到有什么问题吗?对我来说这很奇怪......
更新:请注意,如果我发出警报(oldName),oldName会返回一个函数:
function oncontextmenu(event) {
Ice.Menu.contextMenuPopup(event, "j_id88:sectionContextMenu_sub", "j_id88:j_id111:0:j_id123:0:j_id124");
return false;
}
答案 0 :(得分:2)
在jQuery 1.6之前,jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu")
返回一个函数,因为它返回DOM元素的属性而不是属性(DEMO)。
这在jQuery 1.6(DEMO)中得到修复。
如果你不能使用jQuery 1.6,你必须在DOM元素上调用getAttribute
:
var oldName = jQuery(".singlePaneOfGlassBlock")[0].getAttribute('onclick');
答案 1 :(得分:1)
检查oldName
是否为null
...
答案 2 :(得分:0)
也许删除第三行的分配?替换可能会返回已替换的条目数。
function replaceRightClickIcefacesMethod(){
var oldName = jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu");
oldName.replace('Ice.Menu.contextMenuPopup','contextMenuPopupUpdated');
jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu",oldName);
}