2012-03-25 74 views
0

這是在Dojo編輯器的上下文中,但它應該更一般地應用。強制單擊<img>標記以選擇環繞<a>標記

我有一個<img>標記被包裹在一個<a>標籤:

<a><img width="146" height="109" src="/gaggleVideoProxy.do?op=thumb&amp;thumbUrl=http://i.ytimg.com/vi/xoZXdWl7BZs/default.jpg" _djrealurl="/gaggleVideoProxy.do?op=thumb&amp;thumbUrl=http://i.ytimg.com/vi/xoZXdWl7BZs/default.jpg" &ytvideoid="xoZXdWl7BZs&amp;userVideoId=1073344&quot;"></a> 

如果您點擊此,圖像被選擇。單擊刪除鍵將導致圖像被刪除,但會留下鏈接標記。

我正在尋找一種方法來確保只要<img>標記被刪除,就會刪除<a>標記。


更新

這原來要多道場API問題。望着這SO提問/回答給了我基本的工具做什麼,我需要:

How can i add event listener to the content of dojo editor?

+1

發佈您的JavaScript代碼應該只是在父節點上調用delete方法 – 2012-03-25 19:28:53

+0

我還沒有得到任何JavaScript值得發佈, m尋找一種方法:1)捕獲''上的刪除事件,然後刪除或2)當選擇''時,強制選擇''標籤(這樣刪除將影響' ') – mtyson 2012-03-25 19:45:36

回答

0

這工作:

_connectTagEvents: function(){ 
    this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ 
    this.connect(this.editor.editNode, "onclick", this._onClick); 
    })); 
}, 
_onClick: function(e){ 
    var target = e.target; 
    var tag = target.tagName ? target.tagName.toLowerCase() : ""; 
    var wrapper = target.parentNode; 

    if(/* TAG and/or WRAPPER are what you want*/) {   
    dojo.withGlobal(this.editor.window, "selectElement", dijit._editor.selection, [wrapper]); 
    } 
} 

,這將迫使要選擇的包裝元素。 (不要忘了從initButton()方法調用_connectTagEvents

+1

我認爲如果你這樣做,你可能最終會搞砸變更歷史......你可能可以通過重寫LinkDialog :: _ getCurrentValues來代替(沒有嘗試......只是一個念頭) – Philippe 2012-03-26 14:35:22

0

而不是刪除圖像,刪除圖像的父節點。

+0

如何?我試圖捕獲上的onclick事件,然後調用上的focus(),但這似乎不起作用。 – mtyson 2012-03-25 19:39:07

+0

你使用jQuery還是原始的Javascript?如果你使用jQuery,這可能會變得非常容易解決。 – Daxcode 2012-03-25 19:50:52

+0

使用Dojo。我可以在Dojo中做任何可以在jQuery中完成的任何事情,所以我都十分耳熟能詳。 – mtyson 2012-03-25 19:54:06