2013-07-16 7 views
0

Я пытаюсь получить CID каждого .vehicleID и добавлять каждый href внутри .vehicle-actions класса с &VID=[CID]JQuery изменения связей каждого ребенка внутри каждого цикла

<ul> 
      <li><a href="./garage_vehicle.php?mode=add_vehicle"><span>Create a Vehicle</span></a></li> 

      <li class="vehicle-view toggleVehicleButton"><a class="vehicleID" href="./garage_vehicle.php?mode=view_own_vehicle&amp;CID=6"><span>2014 Audi A4</span></a> 
       <div class="vehicle-actions" style="width: 179px; display: none;"> 
        <ul> 
         <li><a href="/board/garage_vehicle.php?mode=view_vehicle">View Vehicle</a></li> 
         <li><a href="/board/garage_vehicle.php?mode=edit_vehicle">Edit Vehicle</a></li> 
         <li><a class="deletevehicle" href="">Delete Vehicle</a></li> 
         <li><a href="/board/garage_modification.php?mode=add_modification">Add Modification</a></li> 
         <li><a href="/board/garage_premium.php?mode=add_premium">Add Insurance</a></li> 
         <li><a href="/board/garage_quartermile.php?mode=add_quartermile">Add Quartermile Time</a></li> 
         <li><a href="/board/garage_dynorun.php?mode=add_dynorun">Add Dynorun</a></li> 
         <li><a href="/board/garage_track.php?mode=add_lap">Add Lap</a></li> 
         <li><a href="/board/garage_service.php?mode=add_service">Add Service</a></li> 
         <li><a href="/board/garage_vehicle.php?mode=view_own_vehicle">Set Main Vehicle</a></li> 
        </ul> 
       </div> 
      </li> 

      <li class="vehicle-view toggleVehicleButton"><a class="vehicleID" href="./garage_vehicle.php?mode=view_own_vehicle&amp;CID=7"><span>2008 Chevrolet Corvette</span></a> 
       <div class="vehicle-actions" style="width: 179px;"> 
        <ul> 
         <li><a href="/board/garage_vehicle.php?mode=view_vehicle">View Vehicle</a></li> 
         <li><a href="/board/garage_vehicle.php?mode=edit_vehicle">Edit Vehicle</a></li> 
         <li><a class="deletevehicle" href="">Delete Vehicle</a></li> 
         <li><a href="/board/garage_modification.php?mode=add_modification">Add Modification</a></li> 
         <li><a href="/board/garage_premium.php?mode=add_premium">Add Insurance</a></li> 
         <li><a href="/board/garage_quartermile.php?mode=add_quartermile">Add Quartermile Time</a></li> 
         <li><a href="/board/garage_dynorun.php?mode=add_dynorun">Add Dynorun</a></li> 
         <li><a href="/board/garage_track.php?mode=add_lap">Add Lap</a></li> 
         <li><a href="/board/garage_service.php?mode=add_service">Add Service</a></li> 
         <li><a href="/board/garage_vehicle.php?mode=view_own_vehicle">Set Main Vehicle</a></li> 
        </ul> 
       </div> 
      </li> 
     </ul> 

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

JQuery

function getURLParameter(url, name) { 
    return (RegExp(name + '=' + '(.+?)(&|$)').exec(url)||[,null])[1]; 
} 

$('.vehicleID').each(function(i, val){ 
    var vehicleIDurl = ($(this).attr('href')); 
    var CID = getURLParameter(vehicleIDurl, 'CID'); 
    $('.vehicle-actions',this).each(function(i, val){ 
     editCID = $(this).find('a'); 
     editCID.attr('href', editCID.attr('href') + '&VID=' + CID); 
    }); 
}); 

ответ

1

Вы смотрите внутри элемента a.vehicleID, но вы должны заглянуть внутрь его родителя li.

Ваш код может быть упрощен. Я хотел бы сделать это:

$('.vehicleID').each(function(i, val){ 
    var CID = getURLParameter(this.href, 'CID'); 
    $('.vehicle-actions a', $(this).closest('li')).attr('href', function(_, href){ 
     if (href.indexOf("&VID")!=-1) return href; 
     return href + '&VID=' + CID); 
    }); 
}); 

Среди упрощений, я предпочитаю this.href над $(this).attr('href') и я использую the version of the attr function taking a function as second parameter.

+0

http://jsfiddle.net/Beardyco/dmSRd/1/ все еще испытывает проблемы с URL-адресом – ngplayground

+0

Какой вопрос вы видите? –

0

Этот piece кода не может работать,

$('.vehicle-actions',this).each(function(i, val){ 
    editCID = $(this).find('a'); 
    editCID.attr('href', editCID.attr('href') + '&VID=' + CID); 
}); 

В $('.vehicle-actions',this) это не будет идентифицировать следующий div.vehicle-actions, потому что это не a ребенок, поэтому использовать его closest li.vehicle-view в качестве родительского селектора

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

$('.vehicle-actions',$(this).closest('li.vehicle-view')).each(function(i, val){ 
    editCID = $(this).find('a'); 
    editCID.attr('href', editCID.attr('href') + '&VID=' + CID); 
}); 
+0

Я использовал это, но это изменяет весь URL-адрес на '/board/garage_vehicle.php? Mode = view_vehicle & VID = 7', когда каждый из них имеет другой URL-адрес – ngplayground

0

Вы не указали идентификатор автомобиляID во всех тегах, поэтому low statement возвращает только один элемент.

$('.vehicleID').length 

Так что добавьте класс правильно во всех тегах.

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