#jquery
#jquery
Вопрос:
У меня есть этот метод:
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 возвращает функцию, если я делаю alert (oldName):
function oncontextmenu(event) {
Ice.Menu.contextMenuPopup(event, "j_id88:sectionContextMenu_sub", "j_id88:j_id111:0:j_id123:0:j_id124");
return false;
}
Комментарии:
1. Что содержит oldName после инициализации?
Ответ №1:
До jQuery 1.6 jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu")
возвращал функцию, поскольку она возвращала свойство элемента DOM, а не атрибут (ДЕМОНСТРАЦИОННЫЙ вариант).
Это исправлено в jQuery 1.6 (ДЕМО версии).
Если вы не можете использовать jQuery 1.6, вам придется вызвать getAttribute
элемент DOM:
var oldName = jQuery(".singlePaneOfGlassBlock")[0].getAttribute('onclick');
Ответ №2:
Проверьте, oldName
есть null
ли…
Ответ №3:
Может быть, удалить назначение в третьей строке? Replace может возвращать количество замененных записей.
function replaceRightClickIcefacesMethod(){
var oldName = jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu");
oldName.replace('Ice.Menu.contextMenuPopup','contextMenuPopupUpdated');
jQuery(".singlePaneOfGlassBlock").attr("oncontextmenu",oldName);
}
Комментарии:
1.
replace
не на месте. Он возвращает новую строку. Но в любом случае, ошибка в oldName.replace не является функцией, что означает, чтоreplace
в первую очередь не существует.