Impossible d'obtenir la position () dans la boucle $ .each JQuery

J'essaye de faire une boîte éditable (sorte de richTextBox) en utilisant html5 (contenteditable = "true") et jquery. J'ai besoin de trouver la position de chaque élément à l'intérieur de la div editable afin que je puisse insérer un saut de page comme le mot Microsoft fait. Voici la page



<head>
    <title>jQuery Context Menu Plugin Demo</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

    <script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script>


    <script type="text/javascript"> 
        $(document).ready( function() {
            $("#divEdit").keyup(function(){
                $.each($("#divEdit").find("*"), function(i,item){
                    alert(item.position());
                });
            });             
        });
    </script>
</head>

<body>

    

jQuery Context Menu Plugin and KendoUI Demo

    <div style="width:740px;height:440px" contenteditable="true" id = "divEdit">
        
Editor for ASP.NET MVC logo
Kendo UI Editor allows your users to edit HTML in a familiar, user-friendly way.
In this version, the Editor provides the core HTML editing engine, which includes basic text formatting, hyperlinks, lists, and image handling. The widget outputs identical HTML across all major browsers, follows accessibility standards and provides API for content manipulation.
Features include:
  • Text formatting & alignment
  • Bulleted and numbered lists
  • Hyperlink and image dialogs
  • Cross-browser support
  • Identical HTML output across browsers
  • Gracefully degrades to a textarea when JavaScript is turned off
        
Read more details or send us your feedback! </div> </body>

Le problème est que alert (item.position ()) ne récupère rien. L'erreur qui vient dans la barre d'outils du développeur firefox est 'item.position n'est pas une fonction'. Je suppose qu'il doit faire quelque chose avec le type de chaque élément dans $ ("# divEdit"). Find ("*") car tous les éléments sont différents. Toute aide serait appréciée. Merci

0

2 Réponses

Vous devez extraire l'objet jQuery de item , car position() est une méthode jQuery , d'où le se plaindre de position() n'est pas une fonction

$(item).position()//instead of item.position()

Ou même plus concis:

$.each($("#divEdit").find("*"), function(i,item){
   alert(item.position());
}

changer pour

$('#divEdit').find('*').each(function() { 
   alert($(this).position());
})
0
ajouté
Merci les gars. Cela a fonctionné. Besoin d'obtenir mes bases jQuery droite ..: P
ajouté l'auteur pickhunter, source
Eh bien, vous avez répondu de toute façon bruv: P avant moi alors voici la démo que j'essayais de faire: jsfiddle.net/ jJRJT/3 pourrait vous aider!
ajouté l'auteur Tats_innit, source

Changer cette ligne

alerte (item.position ());

à

alert ($ (item) .position ());

0
ajouté