繁体   English   中英

模拟raphael js路径上的click事件

[英]Simulate click event on raphael js path

我有4个SVG,有多个路径。 我在另一个面板上有一个关于这个SVG的副本(这个svg不可点击)。 当我点击可点击的SVG路径时,我用不同的颜色填充路径。

我创建了一个按钮,将第一个SVG上着色的所有路径导入第二个SVG。 为此,我必须模拟好路径上的点击事件。 要找到匹配的路径,我正在使用路径的属性d=

这是我在每条路径上添加事件的代码:

function buildEvent(regions, area) {
    for(var regionName in regions) {
        (function (region) {
            region.attr(style);
            region.node.name = regionName;
            region.data('clicked', false);

        region[0].addEventListener("mouseover", function() {
            if (!region.data('clicked')) region.animate(hoverStyle, animationSpeed);
        }, true);

        region[0].addEventListener("mouseout", function() {
            if (!region.data('clicked')) region.animate(style, animationSpeed);
        }, true);

        region[0].addEventListener("click", function() {
            if (region.data('clicked')) {
                region.attr("fill", "#ddd");
                region.data('clicked', false);
                json_data[area][region.node.name] = false;
            }else{
                region.attr("fill", "#A8BED5");
                region.data('clicked', true);
                json_data[area][region.node.name] = true;
            }
        }, true);

        })(regions[regionName]);
    }
}

当我点击导入按钮时,这是我的代码

$('#btn-import').on('click', function() {

    $('.tab-pane.active svg path').each(function () {
        if ($(this).attr('fill') == '#A8BED5') {
            var to_fill = $("#form svg path[d='" + $(this).attr('d') + "']");

            // to_fill.trigger('click');
            // to_fill[0].trigger('click');
            // to_fill.click();
            to_fill[0].click();
        }
    });
});

如您所见,我尝试了4种触发点击事件的方法。 我不明白为什么没有触发click事件。 to_fill变量是我认为的好对象,因为如果我这样做,我可以得到路径的fill属性:

console.log(to_fill.attr('fill') // output #dddddd

我解决了我的问题。 我替换了这一行:

region[0].addEventListener("click", function() {

通过这条线:

region.node.onclick = function () {

现在我可以使用to_fill.trigger('click'); to_fill.click();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM