似乎触发事件不适用于snap.svg?
基本上我想要的是触发click
事件,但似乎无法使用snap.svg或我做错了。
我无法解决它。
那怎么办呢?
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>
答案 0 :(得分:3)
rect
识别为元素,您应该使用选择器来选择它,例如$('rect')
或者如果您想要更具体$('#svg rect')
,则需要在.click()
函数和.trigger()
中执行此操作,因此它将是这样的:
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>