jQuery ~ настройка href перед тем как следовать - PullRequest
2 голосов
/ 10 августа 2010

У меня есть ссылка с рядом флажков, из-за устаревшего кода, когда пользователь нажимает на флажок, значение этого добавляется в виде списка с разделителями-запятыми к href.

Проблема в том,что теперь, когда я обновляю код, я обнаружил, что href следует быстрее, чем настраивается href, поэтому список исключается.

Я пытался использовать preventDefault(), чтоотлично, но я понятия не имею, как продолжить действие по умолчанию после изменения href, чтобы включить выбранные значения.

Я должен также упомянуть, что невозможно изменить его на обычную форму, так как естьдополнительная опция, установленная в лайтбоксе после отправки .(Не спрашивайте меня, почему, в моей книге это безумие)

Пока я должен

$(function(){
    $('#cnt-area form table tbody').dragCheck();

    // I just split up the .each and .click to see if it mattered, which it doesnt
    $('.multi_assign_link').each(function(){
        $(this).click(function(e){

            e.preventDefault();
            var href = $(this).attr('href');

            $('#cnt-area form input:checkbox').each(function(){
                if($(this).attr('checked')){
                    if(href.search(','+$(this).val()) == -1){
                        href += ','+$(this).val();
                    }
                }else{
                    var s = ','+$(this).val();
                    s.toString();
                    href = href.replace(s, '');
                }
            });
            $(this).attr('href',href);
            // Continue to follow the link
            // Faking a user click here with $(this).click(); obviously throws a loop!
        });
    });
});

1 Ответ

5 голосов
/ 10 августа 2010

Просто установите для местоположения скорректированное значение href и верните false из обработчика, чтобы избежать получения исходной ссылки.

$(function(){ 
    $('#cnt-area form table tbody').dragCheck(); 

    // I just split up the .each and .click to see if it mattered, which it doesnt 
    $('.multi_assign_link').each(function(){ 
        $(this).click(function(e){ 

            var href = $(this).attr('href'); 

            $('#cnt-area form input:checkbox').each(function(){ 
                if($(this).attr('checked')){ 
                    if(href.search(','+$(this).val()) == -1){ 
                        href += ','+$(this).val(); 
                    } 
                }else{ 
                    var s = ','+$(this).val(); 
                    s.toString(); 
                    href = href.replace(s, ''); 
                } 
            }); 
            location.href = href;
            return false;
        }); 
    }); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...