2013-03-29 2 views
2

У меня есть календарь SharePoint, и у меня есть код Javascript, чтобы заставить событие оверлея календаря открыть в модальном диалоговом окне. В основном, это заставляет их открывать в модальном диалоге с помощью этого кода:SharePoint; Javascript повторяет событие click уже на странице

$('.ms-acal-ddiv a').click(function(){ 
    EditLink2(this,'WPQ2'); 
    return false; 
}); 

Проблема заключается в том, что уже есть «родные» события в календаре, которые открываются с помощью этого кода, и то, что происходит в том, что, когда ты нажмите на него, события открываются TWICE с модальным диалогом, что делает страницу непригодной для использования.

Я не разбираюсь в написании jquery или javascript. Как я могу написать javascript для поиска кода, выделенного полужирным шрифтом, и предотвратить его запуск, если ссылка уже выполняется с этим?

Спасибо за помощь заранее.

+0

'EditLink2 (это, 'WPQ2')' - что он делает?/где это определено? Можете ли вы включить его? – couzzi

+0

Да, это определено на странице. Вот как это работает. У вас есть собственный календарь. Все его сообщения событий открыты с помощью «onclick EditLink2 (это,« WPQ2 »); Когда я накладываю календарь, его соответствующие ссылки НЕ открываются с помощью этого. Они открываются в новом окне; href указывает на его прямой URL вместо "EditLink2 (это, WPQ2);". Я использую сценарий, который я опубликовал в Fiddle, чтобы заставить их всех открыться с помощью «EditLink2 (это, WPQ2») », но, делая это, ссылки родного календаря дублируют его, поскольку он уже находится в коде. Это помогает? – user1949459

ответ

1

Попробуйте это:

$('.ms-acal-ddiv a').click(function(event){ 
    EditLink2(this,'WPQ2'); 
    event.stopPropagation(); 
    event.stopImmediatePropagation() 
    return false; 
}); 

Что предотвратит click событие от бурлит.

+0

Я попробую ваш синтаксис, чтобы увидеть, работает ли он, но stopPropagation() была одной из ПЕРВОГО, что я пробовал. Это не сработало, но опять же, возможно, у меня был синтаксис. – user1949459

+0

Просто попробовал, и, к сожалению, он не работает. Событие по-прежнему срабатывает дважды. Поскольку в модальном диалоговом окне есть два события, одновременно модальное диалоговое окно захватывает страницу и делает ее бесполезной. – user1949459

+0

Можете ли вы опубликовать остальную часть своего кода? Для [Fiddle] (http://jsfiddle.net) или [Plunk] (http://plnkr.co), если это возможно. Это будет легче диагностировать таким образом. – couzzi

0

я с той же проблемой. Следующий код, кажется, очистил его для меня:

$('.ms-acal-mdiv a, .ms-acal-ddiv a, .ms-acal-sdiv a').click(function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
    event.stopImmediatePropagation(); 
    EditLink2(this,'WPQ2'); 
}); 

Интересно, если return false встает на пути из любой в конце концов говорит накладку исчезнуть.

Смежные вопросы