JavaScript Selectable probléma


 Sziasztok!
Több napja keresem a megoldást az alábbi problémára, ismét a segítségeteket kérném.
Adott egy javascript selectable lista
Az első kijelölést követően az újabb kijelölésnél kifagy a kód. Miért?
<ol id="selectable"> <li class='ui-state-default' id='36_9'>36</li> <li class='ui-state-default' id='36_10'>36</li> <li class='ui-state-default' id='36_11'>36</li> <li class='ui-state-default' id='36_12'>36</li> <li class='ui-state-default' id='36_13'>36</li> </ol>
...
$(function() { var tol="0",ig="0"; $("#selectable").selectable({ selecting: function(ev, ui) { tol=$("li.ui-selecting:first").attr("id").split('_'); ig=$("li.ui-selecting:last").attr("id").split('_');
$("div.idoszak").text(tol[0] + "-" + ig[0]); }, unselecting: function(ev, ui) {
tol=$("li.ui-selecting:first").attr("id").split('_'); ig=$("li.ui-selecting:last").attr("id").split('_');
$("div.idoszak").text(tol[0] + "-" + ig[0]); } });
|
Szia.
Ugyan még nem használtam jquery selectable-t, de az első és legfonotsabb hiba: a
nincs lezárva. Tegyél a végére egy }); részt. Én inkábbb úgy szoktam ez megoldani, hogy
$(document).ready(function(){ //KÓD });
Remélem segítettem:)
Szerk:
<script language="javascript" type="text/javascript"> $(document).ready(function() { var tol="0"; var ig="0"; $("#selectable").selectable({ selecting: function(ev, ui) { tol=$("li.ui-selecting:first").attr("id").split('_'); ig=$("li.ui-selecting:last").attr("id").split('_'); $("div.idoszak").text(tol[0] + "-" + ig[0]); }, unselecting: function(ev, ui) { tol=$("li.ui-selecting:first").attr("id").split('_'); ig=$("li.ui-selecting:last").attr("id").split('_'); $("div.idoszak").text(tol[0] + "-" + ig[0]); } }); }); </script>
Nekem ez tökéletesen működik, már amennyire meg tudom állapítani, mivel sosem használtam még. |
Azt nem mondtad el, hogy pontosan mit szeretnél csinálni, de én kicsit kísérleteztem, és egy ténylegesen működő megoldást kaptam.
A hiba pedig: rossz osztályt használtál.
$(document).ready(function() { var tol="0",ig="0"; $("#selectable").selectable({ selecting: function(ev, ui) { tol=$("li.ui-state-default:first").attr("id").split('_'); ig=$("li.ui-state-default:last").attr("id").split('_'); $("div.idoszak").text(tol[1] + "-" + ig[1]); }, unselecting: function(ev, ui) { tol=$("li.ui-state-default:first").attr("id").split('_'); ig=$("li.ui-state-default:last").attr("id").split('_'); $("div.idoszak").text(tol[1] + "-" + ig[1]); } }); });
Abban nem vagyok biztos, hogy a tol és az ig tömb 0. vagy 1. indexét szeretnéd használni, de azt te majd átírod ha nem jó. |
Szia!
Kipróbáltam, sajnos nem jó, mert az "ui-state-default" azt az értéket jelenti, ami kijelölhető. Jelen megoldás az első és az utolsó kijelölhető elem ID-jét boncolgatja.
Nekem a kijelölt elemek közül lenne szükségem az első és az utolsó ID-jére még mielőtt bekövetkezne a selectable:stop esemény.
Köszi! :) |
Több napja keresem a megoldást
Több napja annyira jutottál , hogy a törölt témádhoz képest a li elemek számát 540-ről 5-re csökkentetted a html-ben.
A javascripthez hozzá sem nyúltál.
Nekem a kijelölt elemek közül lenne szükségem az első és az utolsó ID-jére még mielőtt bekövetkezne a selectable:stop esemény.
Én próba képen kitöröltem az id-darabolgatást, és kiválóan működik. A selectable:stop esemény bekövetkezésekor viszont szépen össze lehet gyűjteni akár darabolva is a kiválasztott elemek id-it további feldolgozásra.
$(function() { var tol, ig; $("#selectable").selectable({ selecting: function(ev, ui) { tol=$("li.ui-selecting:first").attr('id'); ig=$("li.ui-selecting:last").attr('id'); $("div.idoszak").text( tol + " - " + ig ); }, unselecting: function(ev, ui) { tol=$("li.ui-selecting:first").attr('id'); ig=$("li.ui-selecting:last").attr('id'); $("div.idoszak").text( tol + " - " + ig ); }, stop: function(){ var t = "Választott kordináták:<p>"; $(".ui-selected", this).each(function(){ var cord = $(this).attr('id').split('_'); t += cord[0] +','+ cord[1] +'<br>' }); $(".idoszak").html( t + "</p>") } }); });
Az 540 elemtől ne várj túl gyors működést!  |
A selectable:stop esemény bekövetkezésekor viszont szépen össze lehet gyűjteni akár darabolva is a kiválasztott elemek id-it további feldolgozásra.
Ez így van. De, ahogy írtam:
Nekem a kijelölt elemek közül lenne szükségem az első és az utolsó ID-jére még mielőtt bekövetkezne a selectable:stop esemény.
Valószínűleg félreérthetően fogalmaztam, illetve nem egyértelmű a kód alapján: a darabolt ID-re lenne szükségem... |
|