2013-05-03 41 views
0

我試圖使用jQuerytools overlay進行確認對話。我用'onclick'函數調用覆蓋圖時遇到問題。由onclick發起的jquerytools覆蓋

HTML

<!-- list element --> 
<ul> 
    <li id="item1"> 
     <div class="listName">myListElement-1</div> 
     <div class="listCtrlr"><span onclick="delItem(1, 'myListElement-1')" rel="#deldlg">delete</span></div> 
    </li> 
    <li id="item2"> 
     <div class="listName">myListElement-2</div> 
     <div class="listCtrlr"><span onclick="delItem(2, 'myListElement-2')" rel="#deldlg">delete</span></div> 
    </li> 
    <li id="item3"> 
     <div class="listName">myListElement-3</div> 
     <div class="listCtrlr"><span onclick="delItem(3, 'myListElement-3')" rel="#deldlg">delete</span></div> 
    </li> 
</ul> 



<!-- overlay dialogue --> 
<div id="deldlg" class="modd"> 
    <h5>Confirmation - Delete Campaign</h5> 
    <div class="ctn"> 
     <p id="dq">Are you sure you want to permanently delete this data?</p> 
     <p id="di"></p> 
     <input type="button" value="Yes" id="delsubmit" class="brButton s grdRed"> 
     <input type="button" value="No" class="brButton s close"> 
    </div> 
</div> 

的JavaScript

function delItem(iid, iname) { 
    var trigger = this; 
    trigger.overlay({ 
        fixed: false, 
        closeOnClick: false, 
        mask: {color:'#660000', loadSpeed:100, opacity:0.9}, 
        onBeforeLoad:function() { 
            jQuery('#di').html(iname); 
            jQuery('#delsubmit').attr('onclick', 'del_camp('+iid+')'); 
           } 
       }); 
} 

當我使用上面的腳本,它返回 'trigger.overlay不是一個函數'。有人能幫我弄清楚嗎?

我期待有以下結果(假設我想刪除元素-2)

Confirmation - Delete Campaign 
------------------------------------------------------------- 
Are you sure you want to permanently delete this data? 

    myListElement-2 

[ Yes ]  [ No ] 
+1

你確定'this'實際上應該是什麼嗎?嘗試使用chrome或firebug中的開發人員工具來調試JS,看看那裏發生了什麼。 – Nomad101 2013-05-03 08:58:33

+0

@ Nomad101這就是我在這裏問的原因,因爲我不知道哪一個是正確的用法 - 因爲它不起作用。 – psychonsky 2013-05-03 11:09:42

回答

0

我覺得應該是$(本).overlay(...)來代替,如這不是一個jquery對象,但一個簡單的dom對象,因此無法訪問jquery函數/插件

+0

因爲我上面的腳本沒有起作用,所以我想到了你在那裏提出的建議,並且仍然沒有任何反應,使用jQuery(this).overlay({...}) – psychonsky 2013-05-03 11:07:13

+0

我看到了更好的代碼,我確信我們在一個類裏面..對於你的情況正確的文檔是這個http://jquerytools.org/demos/overlay/modal-dialog.html 裏面一個簡單的函數,你沒有分配給任何東西,這就是爲什麼你得到錯誤;我會建議像$(「#deldlg」)。覆蓋({})..... – user1555320 2013-05-03 19:50:35

0

好吧,我現在知道你的問題是什麼。好,所以你需要爲你使用的任何HTML元素作爲覆蓋層明確地設置一個ID。然後像這樣使用它$("#findme").overlay({..});你所指的this對象是你所在函數的範圍,而不是DOM元素。至少從我可以告訴你的代碼。

+0

謝謝你的迴應,@ Nomad101。但是,我仍然不明白你的'__你所指的這個對象是你所在函數的範圍,而不是DOM元素。'' – psychonsky 2013-05-03 12:07:23