使用SVG元素的所有类创建一个数组

时间:2014-12-01 16:05:45

标签: javascript jquery arrays svg

我知道这可能看起来像一个转贴,但我无法让社区制作的代码here

我要做的是创建我点击的元素中列出的所有类的数组。
我点击的元素是来自SVG对象的<g></g>元素。

我想将类(在数组中)发布到模态和<g>元素的ID。这是我的代码:

//reveal Modal when when clicking on an item box.
$(document).ready(function() {
    $('.items').click(function() {
        $.ajax({
            type: "POST",
            url: "/includes/functions/choose_item.php",
            data: { id: this.id, class: this.className}
        })
            .done(function() {
                $('#choose_item_modal').foundation('reveal', 'open', "/includes/functions/choose_item.php") ;
            })
    });
});

它将它发布到我的PHP脚本,并且ID可以工作,但是该类是在baseval和animval的数组中,我想要一个只包含baseval的所有值的数组。

这是我得到的数组:

Array ( [animVal] => items hero_item [baseVal] => items hero_item )

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

SVG元素实际上没有类似常规元素的类,className属性返回一个特殊对象,通常是SVGAnimatedString看起来像

{animVal: "class class2", baseVal: "class class2"}

class属性实际上只是一个有些奇怪的常规属性,所以你需要使用getAttribute('class'),或者在jQuery attr()中获取属性的值

$(document).ready(function() {
    $('.items').click(function() {
        $.ajax({
            type : "POST",
            url  : "/includes/functions/choose_item.php",
            data : { 
                id      : this.id, 
                'class' : $(this).attr('class')
            }
        }).done(function() {
            $('#choose_item_modal').foundation('reveal', 'open', "/includes/functions/choose_item.php") ;
        });
    });
});

请注意,class是javascript中的关键字,因此应引用它 如果您需要数组,可以执行$(this).attr('class').split(/\s+/);

TEST