#javascript #jquery #json
#javascript #jquery ( jquery ) #json
Вопрос:
Пожалуйста, посмотрите мой полный json здесь: http://jsfiddle.net/D6fTZ / и чего я хочу. как для этого json-кода каждый воссоединяется.повторно включить всплывающую подсказку для каждого name_re? Нравится:
я могу использовать этот новый JSON (если выше JSON не работает для того, что я хочу. как это можно сделать с помощью этого JSON): http://pastebin.com/TvcyjykR
«name_re»: «11» = у пользователя должна быть эта подсказка для него name_re(11)=> 11 11
«name_re»: «11» = у пользователя должна быть эта подсказка для него name_re(11)=> 666666666 99999 777777 1221
» name_re»: «12121112» =всплывающая подсказка для name_re(12121112)=> 55555 00000000 222222222 333333333
Как это можно исправить?
Моя попытка (не работает верно):
$.each(data.reunits, function (index, value) {
$('#residence_name').append('<div class="tool_tip"><div class="tooltip"><ul class="li_show"></ul></div><div class="tooltip_hover" style="font-weight: bold; padding: 5px 0 0 0; cursor: pointer;" id="' value.residence[0].hotel_id '">' value.residence[0].name_re '</div></div>');
tool_tip();
$.each(value.reun, function (index2, value2) {
$('#residence_name .li_show').append('<li>' value2.name '</li>');
tool_tip();
});
});
Комментарии:
1. просто чтобы быть уверенным, вам нужен список резиденций с именами воссоединений в качестве всплывающей подсказки?
2. Более того, видя вашу функцию tool_tip(), вы можете вызвать ее один раз, после обоих $.each . (и, пожалуйста, поместите тег style в css) (и вам не нужно использовать string jsonparse, вы можете использовать прямой объект json напрямую {[like: this]}. но это спорный вопрос для скрипки).
3. @roselan — Можете ли вы привести мне пример скрипки из моего кода?
4. проверьте скрипку внизу моего ответа 😉
Ответ №1:
Вы добавляете каждое значение в li_show
. таким образом, он не добавляет только один, он добавляет каждый класс, который использует li_show
class. Так что, возможно, вы можете изменить имя класса на uniq-имена или лучше использовать id для каждого значения. Проверьте это http://jsfiddle.net/D6fTZ/2 /
$.each(data.reunits, function (index, value) {
$('#residence_name').append('<div class="tool_tip"><div class="tooltip"><ul class="li_show" id="li_show' index '"></ul></div><div class="tooltip_hover" style="font-weight: bold; padding: 5px 0 0 0; cursor: pointer;" id="' value.residence[0].hotel_id '">' value.residence[0].name_re '</div></div>');
$.each(value.reun, function (index2, value2) {
$('#residence_name #li_show' index '').append('<li>' value2.name '</li>');
});
tool_tip();
});
Ответ №2:
вот версия, которая работает:
$.each(data.reunits, function (index, value) {
var $object = $('<div class="tool_tip"><div class="tooltip"><ul class="li_show"></ul></div><div class="tooltip_hover" style="font-weight: bold; padding: 5px 0 0 0; cursor: pointer;" id="' value.residence[0].hotel_id '">' value.residence[0].name_re '</div></div>');
$.each(value.reun, function (index2, value2) {
$('.li_show', $object).append('<li>' value2.name '</li>');
});
$('#residence_name').append($object);
});
tool_tip();
проблема, с которой вы сталкиваетесь, заключается в том, что вы делаете второе добавление к ‘#residence .li_show’. это означает, что вы будете добавлять их ко всем на странице, а не к той, которая связана с местом жительства, обрабатываемым в цикле. То, что я делаю, — это переменная, в которую помещаются воссоединения, следовательно, изолируя их от главной страницы и добавляя их один раз.