1

我在 SVG 画布上有可以根据调色板着色的元素。如果单击特定颜色,我将尝试添加无填充选项,如果选择了任何其他颜色,则删除该属性。

js代码:

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');
}

我怀疑变量有问题。正如我在警报中看到的对象对象。第一个事件正在触发,因此填充不透明度将应用于所选元素,但这与选择哪种颜色无关。单击另一种颜色将自动删除填充不透明度属性。

我还想知道 :not 选择器是否有问题。我也试过:

var $otherColour = $('#mainToolFill div.toolPopup a').not('#mainToolFill div.toolPopup a.color15');

如果有人可以对此有所了解,将不胜感激。我注意到这可能不是实现这一点的最经济的方式。

如果您需要查看更多代码,请告诉我。

4

1 回答 1

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 后才添加填充不透明度,但是任何其他颜色通常会删除填充不透明度属性,即使它不存在(除了在这种情况下颜色15)。

于 2012-05-11T07:31:31.847 回答