2013-05-03 7 views
0

Я пытаюсь использовать jQuerytools overlay для подтверждения диалога. У меня проблема с функцией onclick, чтобы вызвать оверлей.наложение jquerytools, инициированное onclick

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

+0

@ Nomad101 Вот почему я спросил здесь, потому что я не знаю, какой из них является правильным использованием, поскольку он не работает. – psychonsky

ответ

0

Я думаю, что это должно быть $ (это) .overlay (...) вместо того, чтобы, как и это не объект jquery, а простой объект dom, поэтому он не может получить доступ к функциям/плагинам jQuery.

+0

, так как мои сценарии выше не работали, я думал о том, что вы там предложили, и до сих пор не существует никакого ответа с помощью jQuery (this) .overlay ({...}) – psychonsky

+0

Я лучше понял ваш код, я был уверен мы, где внутри класса .. Правильная документация для вашего дела такова: http://jquerytools.org/demos/overlay/modal-dialog.html внутри простой функции, которой у вас нет, это ни на что не связано, поэтому вы получить ошибку; Я бы предложил что-то вроде $ («# deldlg»). Overlay ({}) ..... – user1555320

0

Итак, теперь я знаю, что у вас проблема. Итак, вам нужно либо установить id явно для любого HTML-элемента, который вы используете в качестве наложения. затем используйте его так: $("#findme").overlay({..}); Объект this, на который вы ссылались, был областью действия функции, в которой вы были, а не элементом DOM. По крайней мере, из того, что я могу сказать о вашем коде.

+0

спасибо за ответ, @ Nomad101. но я до сих пор не понимаю вашего «__The» этого объекта, о котором вы говорили, был областью функции, в которой вы были, а не элементом DOM .__ ' – psychonsky