jQuery单击函数从元素中删除属性并单独单击恢复属性

时间:2012-05-10 08:26:28

标签: javascript jquery html svg

我在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');

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

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

1 个答案:

答案 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的情况下)。