jQuery单击功能可从元素中删除属性并在单独单击时恢复属性

jQuery click function to remove attribute from element and reinstate attribute on separate click

本文关键字:属性 单击 恢复 单独 功能 元素 jQuery 删除      更新时间:2023-09-26

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

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

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

我想我有一些工作:

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