в чем ошибка
есть вот такой скрипт:
<script type="text/javascript"> function simple_tooltip(target_items, name){ $(target_items).each(function(i){ $("body").append("<div class='"+name+"' id='"+name+i+"'><p>"+$(this).attr('title')+"</p></div>"); var my_tooltip = $("#"+name+i); $(this).removeAttr("title").mouseover(function(){ my_tooltip.css({opacity:1, display:"none"}).fadeIn(10); }).mousemove(function(kmouse){ my_tooltip.css({left:kmouse.pageX+15, top:kmouse.pageY+0}); }).mouseout(function(){ my_tooltip.fadeOut(10); }); }); } $(document).ready(function(){ simple_tooltip("area","tooltip"); }); </script> я решил его немного подкорректировать так, чтобы только при условии что id="squidhead0" title принимал class="tooltip", например если id="squidhead2", то title не оформляется или же оформляется но по другому стилю. Так вот я изменил вот так: <script type="text/javascript"> function simple_tooltip(target_items){ $(target_items).each(function(){ $("body").append("<div class='parking' id='squidhead0'><p>"+$(this).attr('title')+"</p></div>"); var my_tooltip = $("#squidhead0"); $(this).removeAttr("title").mouseover(function(){ my_tooltip.css({opacity:1, display:"none"}).fadeIn(10); }).mousemove(function(kmouse){ my_tooltip.css({left:kmouse.pageX+15, top:kmouse.pageY+0}); }).mouseout(function(){ my_tooltip.fadeOut(10); }); }); } $(document).ready(function(){ simple_tooltip("area","tooltip-parking"); }); <div class="parking"> <img src="... alt="" class="map" usemap="#park" /> <map name="park"> <area id="squidhead0" title="Парковка" alt="Link" coords="5,35, 155,10, 250,70, 285,140, 277,143, 278,190, 335,310, 90,320, " shape="poly" href="#" data-maphilight="{"stroke":false,"fillColor":"fdff5a","fillOpacity":0.7}" /> </map> </div> но вот только не работает, что сделал не так ? |
А как она у вас будет работать, если каждому добавляемому div вы указываете одно и тоже значение id - squidhead0, и это при том, что id=squidhead0 уже имеет area?
|
а можете подсказать, как сделать правильно, в java не силен
|
Значит надо учить, а потом писать, а не действовать "может повезет".
Как в исходном коде формируется ID - по индексу элемента (i) и переданному имени (name): $(target_items).each(function(i){ $("body").append("<div class='"+name+"' id='"+name+i+"'> ... Вы имя в функции указываете, но индекс то зачем выбросили и всем добавляете 0? Более того, у вас цикл должен брать индекс + 1, так как area имеет индекс 0 в атрибуте ID. Или измените id у area. Да и вообще, уж если гонять в цикле, то хотя бы тогда обращений делать меньше надо, а то смрад какой-то. |
Почему в функцию передаете два аргумента "area","tooltip-parking", а в самой функции оставили только один?
|
Цитата:
|
В общем разбирайтесь с аргументом вторым, а функцию хотя бы так перепишите:
function simple_tooltip(target_items){ $(target_items).each(function(i){ $('<div class="parking" id="squidhead'+(i+1)+'"><p>'+this.title+'</p></div>') .appendTo('body') .mouseover(function(){ $(this).css({opacity:1, display:"none"}).fadeIn(10); }) .mousemove(function(kmouse){ $(this).css({left:kmouse.pageX+15, top:kmouse.pageY+0}); }) .mouseout(function(){ $(this).fadeOut(10); }); $(this).removeAttr('title') }); } |
>ориентируясь на исходный скрипт
Это каким образом вы на него ориентировались, если в исходнике и передается, и принимается два аргумента? |
так почему я и написал сюда!
|
Ну здрасьте, вам что тут аргументы подсчитывать должны?
В исходнике вторым аргументом передается имя, которое будет получать объект. Вы не используете этого, зачем передаете тогда, значит и вызов функции должен быть не: а simple_tooltip("area"); И, когда выставляете код, то жалейте читающих его (сами себя, это уже ваши проблемы) - делайте отступы в нем, а то в каше вами представленной разбираться.... |
Часовой пояс GMT +3, время: 14:47. |