2012-03-23 2 views
-2

у меня есть:Изменение HREF звена, когда другое нажатие на ссылку (с JQuery)

<a id="id1" href="href1?key=value">First link</a> 
<a id="id2" href="href2?key=value">Second link</a> 

При первом нажатии на ссылку, мне нужно изменить HREF второй ссылки «href2» (и наоборот) с JQuery. В принципе мне нужно сбросить URL, таким образом, что не существует строка запроса:

  • Если «ссылка» нажата, то вторая ссылка должна стать

    <a id="id2" href="href2">Second link</a> 
    
  • Когда "Второе звено" нажата, первая ссылка должна стать

    <a id="id1" href="href1">First link</a> 
    

EDIT

Я пользуюсь an Ajax Tabs Content Script. На каждой вкладке у меня есть форма поиска. По некоторым причинам я должен передать искомое значение через GET. Он работает, но если я изменю вкладку, например. от вкладки 1 до вкладки 2, поиск повторяется при возврате на вкладку 1. Поэтому я ищу способ «сбросить» URL-адрес (например, удалить строку запроса), щелкнув на другой вкладке.

Я попробую ваши предложения.

+3

вы упоминаете изменения, но изменить к чему? вы только что сказали * «измените href второй ссылки (и наоборот)» *, уверен, что это легко, но изменить на что? также что означает * "** reset ** url" * означает? – Joseph

+0

Вы имеете в виду подкачку href между собой? –

ответ

0

Это то, что вы ищете?

​$("#id1").click(function(){ 
    $("#id2").attr("href") = "new_url"; 
}); 

$("#id2").click(function(){ 
    $("#id1").attr("href") = "new_url"; 
}); 

0

Я полагаю, обе ссылки не будут вызывать полную обратную передачу (т.е. обновить страницу полностью), потому что тогда, не было бы никакого смысла делать это на стороне клиента с помощью JavaScript. Если страница полностью обновлена, вам нужно будет сделать это на своем сервере.


EDIT: Я вижу, что в вашем примере ваши hrefs имеют другой формат вместо "?" u используют «/», что может представлять проблемы, поскольку невозможно предсказать, сколько «/» может существовать в URL-адресе. Однако, если вы знаете , что параметры после ПОСЛЕДНИЙ «/», то и можно использовать, что вместо того, чтобы вот так

$('#id1').click(function (e) { 
    e.preventDefault(); //To stop the postback (if needed) 
    // Grab the url 
    var url = $('#id2').attr('href'); 
    //Grab the substring from the start to the last index of "/" 
    url = url.substring(0,url.lastIndexOf('/')); 
    //Get first part of url 
    $('#id2').attr('href', url); 
}); 

И это вот для URLs с «?»

$('#id1').click(function (e) { 
    e.preventDefault(); //To stop the postback (if needed) 
    // Split the href with '?' to get url without parameters 
    var url = $('#id2').attr('href').split('?'); 
    //Get first part of url 
    $('#id2').attr('href',url[0]); 
}); 

Выберите какой подходит вам и сделать то же самое для 2-го звена

+0

Извините, произошла ошибка в формате, который я использовал, это «?» вместо "/". Теперь все правильно. – Sefran2

0

Ьги действительно делает this-:

$("input[id^='id']").each(function(){ 
var href_value = $(this).attr("href"); 
     $(this).attr("href") = href_value; 
    }); 
Смежные вопросы