Я написал jQuery (function) для выполнения действия для некоторого div-класса (A). Когда мы щелкаем гиперссылки в этом классе div, эти ссылки будут открыты в другом div-id (B). Здесь мои проблемы: я хочу отключить функцию для одной ссылки в первом классе div (A).
Например, если в div-классе (A) (для 1 и 2) есть две гиперссылки, когда мы щелкаем по ссылке 1, она должна выполнить jQuery. Когда мы нажимаем ссылку 2, jquery не должен быть выполнен для этой ссылки. ПРИМЕЧАНИЕ. Две ссылки (link1 и link2 оба находятся в одном и том же div-классе (A)).
моя функция jQuery идет как
$('.div-class(A) a').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});
Как мне решить эту проблему. Нужно ли добавлять функцию отключения? Очевидно, я не должен использовать.remove() → как полностью удаляет ссылку.
Какие-либо предложения???
если вы используете .on()
для привязки своего события, тогда вы можете отпереть его с помощью .off()
, например:
Обновлено, чтобы отражать фактические потребности OPs (я думаю)
$('.div-class(A) a').on('click', function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});
// This will unbind the click action for a tags inside a div with id #sub-b
$('#sub-b a').off('click');
Следует отметить, что если вы используете делегирование событий, то вы не можете использовать off на внутреннем div таким образом.
Если вы хотите удалить событие после его первого щелчка, вы можете просто отпереть его:
$('.div-class(A) a').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
$(this).off("click");
return false;
});
Для получения дополнительной информации об отключении: http://api.jquery.com/off/
Если вы просто хотите, чтобы определенные ссылки в вашем div были доступны для клика, просто добавьте соответствующий класс и выполните фильтрацию:
$('.div-class(A) a.opensUpDivB').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});
Пытаться
: не переключатель
$('.div-class(A) a:not(disabledLinkSelctor)').click(function(){
var url = $(this).attr('href');
var height = $('#div-id(B)').height();
var width = $('#div-id(B)').width();
$('#div-id(B)').replaceWith( "'<object data="+url+" width="+width+" height="+height+"/>'" );
return false;
});