Nu se poate obține poziția () în buclă JQuery $ .each

Încerc să fac o cutie editabilă (un tip de fișier richTextBox) folosind html5 (contenteditable = "true") și jquery. Trebuie să aflu poziția fiecărui element în div divizibil, astfel încât să pot introduce o rupere de pagină ca și cuvântul microsoft. Aici este pagina



<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>

Problema este că alerta (item.position ()) nu aduce nimic. Eroarea care apare în bara de instrumente pentru dezvoltatori de firefox este 'item.position nu este o funcție'. Cred că trebuie să facă ceva cu tipul fiecărui element din $ ("# divEdit"). Găsi ("*"), deoarece toate elementele sunt diferite. Orice ajutor ar fi apreciat. Mulțumiri

0

2 răspunsuri

Trebuie să obțineți obiectul jQuery din item , deoarece position() este o metodă jQuery . se plâng că position() nu este o funcție

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

Sau chiar mai concis:

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

schimba in

$('#divEdit').find('*').each(function() { 
   alert($(this).position());
})
0
adăugat
Multumesc baieti. A funcționat. Trebuie să îmi dau dreptul de bază pentru jQuery ..: P
adăugat autor pickhunter, sursa
Ei bine, ați răspuns oricum bruv: P înaintea mea, deci aici faceți demo-ul pe care încercam să-l fac: jsfiddle.net/ jJRJT/3 ar putea ajuta!
adăugat autor Tats_innit, sursa

Schimbați această linie

alert (item.position ());

la

alertă (.Poziție $ (element) ());

0
adăugat