我在SVG画布上有元素,可以根据调色板进行着色。我想在单击特定颜色时添加无填充选项,然后在选择任何其他颜色时删除该属性。
js code:
if(!$selectedElems){return;}
$selectedElems.each(function(){
$(this)[($(this).prop('tagName') === 'g' ? 'find' : 'filter')]('text[fill],rect[fill],circle,path').attr('fill',colour);
var $noFillColour = $('#mainToolFill div.toolPopup a.color15');
var $otherColour = $('#mainToolFill div.toolPopup a:not("color15")');
if($($noFillColour).bind('click')) {
alert ($noFillColour);
$selectedElems.attr('fill-opacity', '0');
}else{
($($otherColour).bind('click'));
alert ($otherColour);
$selectedElems.removeAttr('fill-opacity');
}
我怀疑变量存在问题。因为我在警报中看到了Object对象。第一个事件是触发,因此填充不透明度将应用于所选元素,但这与拾取的颜色无关。然后单击另一种颜色将删除fill-opacity属性。
我也想知道:not选择器是否有问题。我也尝试过:
var $otherColour = $('#mainToolFill div.toolPopup a').not('#mainToolFill div.toolPopup a.color15');
如果有人可以对此有所了解,我们将不胜感激。我注意到这可能不是实现这一目标的最经济的方法。
如果您需要查看更多代码,请告诉我们。
答案 0 :(得分:0)
我认为我有一些有用的东西:
$('#mainToolFill div.toolPopup a.color15').bind('click',function() {
$selectedElems.attr('fill-opacity','0');
});
$('#mainToolFill div.toolPopup a:not(".color15")').bind('click',function() {
$selectedElems.removeAttr('fill-opacity');
});
唯一的问题是它可能很昂贵,只有在选择了color15后才会添加填充不透明度,但是任何其他颜色通常都会删除fill-opacity属性,即使它不存在(除了在colour的情况下)。