Я использую JS для поиска в XML и получения его элементов, чтобы использовать его в дальнейшей обработке, я использую heapbox для отображения элементов, а затем используя .selected
чтобы получить выбранный элемент, чтобы отображать его.
Проблема здесь в том, что я хочу получить выбранный элемент, чтобы сделать некоторую обработку имени перед тем, как получить детей, но я ничего не получил при хранении в var
и получил его при непосредственном использовании полного запроса,
например,
var section = '', text = '' ;
section = $('menu').find($(".selected").text()).attr('nodeName');
alert($('menu').find($(".selected").text()).attr('nodeName'));
в этом section
кода ничего не равно, text
равно никому, он оповещает undefined
при использовании $('menu').find($(".selected").text()).attr('nodeName')
непосредственно в обработке работает очень хорошо.
ОБНОВИТЬ:
Файл xml:
<?xml version="1.0" encoding="UTF-8"?>
<menu parent_id="0" >
<Menu cat="main">
</Menu>
<Soup cat="main">
<Mushrom0Tomato.Soap price = "15.95" hasoption = "false">
</Mushrom0Tomato.Soap>
<Cream.Of.Chicken.Soap price = "16.95" hasoption = "true">
<Add.Mushroom price = "3.95"></Add.Mushroom>
<none price = "0"></none>
</Cream.Of.Chicken.Soap>
<Season.Soap price = "15.95" hasoption = "false">
</Season.Soap>
</Soup>
</menu>
Код JS:
var cats=[], cati=0, total=0, selectedarray=[], itemoptions=[], optionstring='', section='', si=0, oi=0, items=[];
$("#total").append("Total: " + total + " EGP");
$('#dummy').load('cafe.xml',function() {
initialize();
})
function initialize(){
ct=$('menu').children().length;
for(cati==0;cati<=ct-1;cati++)
{
cats[cati]=$('menu').children().eq(cati).prop('nodeName');
var realname = cats[cati];
if(realname.indexOf(".") != -1){
realname = realname.replace(/\./g,' ');
}
$('.basic-example').append('<option value="option1">'+realname+'</option>');
}
$(".basic-example").heapbox({'onChange':function(){loadmenu()},effect:{type:"fade",speed:"slow"}});
}
// loading the items to the menu
function loadmenu()
{
$("#gallery").empty();
section = $('menu').find($(".selected").text()).attr('nodeName');
alert($("menu .selected").text().toString());
.
.
.
.find
предназначен для поиска дочерних элементов выбранного узла
Вы, вероятно, просто хотите
$("menu .selected").text();
А также
$("menu .selected").attr("nodeName");
.find
эквивалент этого (хотя, вероятно, не нужно) будет
$("menu").find(".selected").text();
А также
$("menu").find(".selected").attr("nodeName");
$("menu .selected").text();
это дает мне пустую строку