Я думаю, что события нажатия jQuery добавляются после вызова функции unbind (). Вот почему работает следующий код.
$("p").click(function(){alert('clicked'); $(this).unbind('click')});
Некоторое время в вашей функции проходит до тех пор, пока вы не нажмете кнопку оповещения и функция unbind () не будет работать после нажатия кнопки ОК.
Вот решение, которое я протестировал:
function removeClick() {
$("p").unbind('click');
}
var initTimeout = setTimeout(function() { removeClick(); }, 1000);
Если вам не нравится использовать тайм-ауты или интервалы в скрипте greasemonkey, вы можете добавить событие mouseover к элементам p, чтобы убрать щелчок.
$("p").mouseover(function(){
$(this).unbind('click');
});