2011-08-18 6 views
1

En html j'ai sur la table comme ceci:JQuery ne prend pas en charge l'attribut personnalisé dans IE *?

<table for="availableTimeRanges"></table>

je utilisateur jquery pour trouver la table

var table = $("table[for='availableTimeRanges']"); 

Dans Firefox et Chrome, cela fonctionne, peut retourner la table, mais IE8, retour rien Alors je cours sous le code dans IE8, a trouvé la valeur d'attribut est vide:

$.each($("table"), function(i,n){ 
     alert($(n).attr("for") 

}); 

quelle est la raison

+2

'for' n'est pas un attribut personnalisé - c'est un attribut existant (il est défini dans la norme), mais vous l'utilisez abusivement sur l'élément TABLE. –

Répondre

1

Pour ajouter à ce que dit Šime Vidas, Essayez de changer le nom de fo r à quelque chose d'autre comme forparam, htmlFor, etc. (Vous ne pouvez pas utiliser avec une table son pour les étiquettes qui sont pour une entrée)

$(function() { 

     $('table[forparam=availableTimeRanges]').each(function() { 
      alert($(this).attr('forparam')); 
     }); 

    }); 
+0

cela fonctionne, merci – Xilang

1

Vous feriez mieux de noms de classe d'emploi, ils sont pris en charge partout

<table class="for_availableTimeRanges"></table> 

et

$('.for_availableTimeRanges') 
0

En pense que vous devriez essayer envelopper votre code dans $(function(){...});

$(function(){ 
    $.each($("table"), function(i,n){ 
     alert($(n).attr("for") 
    }); 
}); 
0
<table data-ranges="availableTimeRanges"> </table> 

var ranges = { 
    set : function (options){ 
    options = options || []; 
    //loop and set ranges 
    }, 
    get : function(){ 
    $("table [data-ranges='availableTimeRanges']").each(function(){ 
     alert($(this).data("ranges")); 
    }); 
    } 
}; 
ranges.get // calls get method 
+0

Une petite explication serait génial :) Sur SO les gens ont tendance à vouloir savoir "pourquoi" :) – ForceMagic

Questions connexes