如何使用Snap Svg触发?

时间:2016-03-10 21:43:42

标签: jquery svg

似乎触发事件不适用于snap.svg

基本上我想要的是触发click事件,但似乎无法使用snap.svg或我做错了。

我无法解决它。

那怎么办呢?

JSFIDDLE

var s=Snap("#svg");
var rect=s.rect(0, 0, 100,600)
rect.attr({ 
fill:"#212121"
});

var animating = true;

function aniOn() {
  if (animating) {
    rect.animate({
      width: 400
    }, 1000, mina.elastic);
  };
}

function aniOff() {
  if (animating) {
    rect.animate({
      width: 100
    }, 1000, mina.elastic);
  };
}
rect.click(function() {
  animating = true;
  aniOn()
});

rect.mouseout(function() {
  animating = true;
  aniOff()
});
$("#button").click(function() {
  rect.trigger('click');
});
html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
}
#svg {
  position:absolute;
}

#button {
  margin-left:200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/snap.svg/0.3.0/snap.svg-min.js"></script>

<svg id="svg"  width="200" height="100%" >
</svg>
<button id="button">Click</button>

1 个答案:

答案 0 :(得分:3)

jQuery不将

rect识别为元素,您应该使用选择器来选择它,例如$('rect')或者如果您想要更具体$('#svg rect'),则需要在.click()函数和.trigger()中执行此操作,因此它将是这样的:

jsFiddle

var s=Snap("#svg");
var rect=s.rect(0, 0, 100,600)
rect.attr({ 
fill:"#212121"
});

var animating = true;


function aniOn() {
  if (animating) {
    rect.animate({
      width: 400
    }, 1000, mina.elastic);
  };
}



function aniOff() {
  if (animating) {
    rect.animate({
      width: 100
    }, 1000, mina.elastic);
  };
}
$('rect').click(function() {
  animating = true;
  aniOn();
  console.log('clicked!') // I've added this for demonstration purpose
});

rect.mouseout(function() {
  animating = true;
  aniOff()
});


$("#button").click(function() {
  $('rect').trigger('click');
});
html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
#svg { position:absolute; }
#button { margin-left:200px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/snap.svg/0.3.0/snap.svg-min.js"></script>
<svg id="svg"  width="200" height="100%" ></svg>
<button id="button">Click</button>