2009-09-24 8 views
0

Voici un court extrait de HTML (il contient tous les fichiers HTML et javascript code):JQuery Problème avec attr()

<script type="text/javascript"> 
    //<![CDATA[ 
$(document).ready(function() { 
    $('.remove-temporary-photo').click(function() { 
     var url = '/my-account/remove-media/id/' + $(this).attr('id'); 
     $.get(url, function(data) { 
      // 
     }); 
     var id; 
     id = $('ul.inl').attr('id'); 
     alert(id); 
     //$.get('/my-account/temporary-album-photos/id/' + id, function(data) { 
     // $('#temporaryPhotos').html(data); 
     //}); 
    }); 
}); //]]> 
</script> 
<ul class="inl" id="4"> 
    <li> 
     <a href="#53" class="img"><img src="/uploads/photos-thumbs/53.jpg" alt="Public Photo #53" /></a> 
     <p class="options"> 
      <input type="text" name="title53" id="53" value="Title..." class="title" style="width: 81px; margin-top: 5px; border: 0;" /> 
      <a href="#53" class="blue remove-temporary-photo" id="53">remove</a> 
     </p> 
    </li> 

</ul> 
<div class="clear">&nbsp;</div> 

Avis cette ligne:

alert(id); 

Ce que je reçois est un fenêtre popup vide. Ne devrait pas être égal à 4? Je ne comprends pas. La raison pour laquelle cela compte est parce que j'ai besoin de l'id pour les trois/quatre prochaines lignes de code qui sont commentées maintenant.

EDIT:

Maintenant, je suis en utilisant ids valides mais les alertes sont encore vides:

<script type="text/javascript"> 
    //<![CDATA[ 
$(document).ready(function() { 
    $('.remove-temporary-photo').click(function() { 
     var id = $(this).attr('id'); 
     id = id.substr(2); 
     alert(id); 
     //var url = '/my-account/remove-media/id/' + id; 
     //$.get(url, function(data) { 
      // 
     //}); 
     id = $('.inl:first').attr('id'); 
     id = id.substr(2); 
     alert(id); 
     //$.get('/my-account/temporary-album-photos/id/' + id, function(data) { 
     // $('#temporaryPhotos').html(data); 
     //}); 
    }); 
}); //]]> 
</script> 
<?php if (count($this->photos) > 0): ?> 
<ul class="inl" id="id<?php echo $this->escape($this->a->id); ?>"> 
<?php foreach ($this->photos as $p): ?> 
    <li> 
     <a href="#id<?php echo $this->escape($p->id); ?>" class="img"><img src="/<?php echo $this->escape($p->thumb_path); ?>" alt="<?php echo $this->escape($p->title); ?>" /></a> 
     <p class="options"> 
      <input type="text" name="title<?php echo $this->escape($p->id); ?>" id="id<?php echo $this->escape($p->id); ?>" value="Title..." class="title" style="width: 81px; margin-top: 5px; border: 0;" /> 
      <a href="#id<?php echo $this->escape($p->id); ?>" class="blue remove-temporary-photo" id="<?php echo $this->escape($p->id); ?>">remove</a> 
     </p> 
    </li> 
<?php endforeach; ?> 
</ul> 
<div class="clear">&nbsp;</div> 
<?php endif; ?> 
+0

au lieu de "# 53" utiliser "# a53" – balexandre

+0

Pourquoi? Je ne comprends pas. –

Répondre

4

Vos identifiants ne sont pas valides - ils ne sont pas autorisés à commencer par les chiffres. Selon le HTML 4 spec:

ID et jetons Le nom doit commencer par une lettre ([A-Za-z]) et peut être suivi par un certain nombre de lettres, de chiffres ([0-9]), traits d'union ("-"), souligne ("_"), deux-points (":") et points (".").

+0

Merci, j'ai édité les identifiants, ils sont valables maintenant mais quand même, l'alerte est vide. J'ai posté le code mis à jour ci-dessus. –

+0

Les deux alertes sont vides en réalité, je ne comprends pas cela. –

+0

De plus, l'ancre et les entrées ont le même ID. – Powerlord