0

一直在尝试创建我自己的插件并设法得到一个基本的排序。

我添加了一个自定义文本字段,以便我可以将自定义属性添加到这种格式的元素{"data-title":"My data title","data-id":"001"}。我还可以编辑元素并返回自定义属性。

这很好用,可以添加任意数量的内容。问题是当我想删除一个时,我只是从文本字段中删除它并单击确定,但我必须单击它两次并且无法找出原因。这是我到目前为止的代码,可能有更好的方法来做到这一点,但这有点工作。

commit: function(element) {

//core attributes to ignore
var ignoreArr=["href","id","name","data-cke-saved-href","class","style","title"];

//add to ignore Array, attributes to keep
var data=$.parseJSON('['+this.getValue()+']');
if(data) {
    $(data).each(function(i,val){
        $.each(val,function(k,v){
            ignoreArr.push(k);     
        });
    });

}
//alert(ignoreArr);

//remove all uneeded custom attributes first
$.each(element.$.attributes, function(k,v) {
    if(v) { //MOD :: had to add this check in to stop the double click
        if(jQuery.inArray(v.name,ignoreArr)==-1) {
            element.removeAttribute(v.name);                                
        } 
    }
});

//will create custom attributes
if(data) {
    $(data).each(function(i,val){
        $.each(val,function(k,v){
            element.setAttribute(k,v);     
        });
    });
}   //end if data

}

问题似乎出在这一行element.removeAttribute(v.name); ,如果我用警报替换它,一切正常。现在双击不是世界末日,只是烦人我不知道为什么,任何人都会得到建议/修复。

4

0 回答 0