Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2016, 19:57
Интересующийся
Отправить личное сообщение для koha345 Посмотреть профиль Найти все сообщения от koha345
 
Регистрация: 16.04.2016
Сообщений: 28

Не срабатывает событие 2
Почему-то при нажатии на div с id = "cp" сообщение выводится, а при id = "btn" - нет. Почему? Как повесить событие на кнопку, созданную из div?

Код:
<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title></title>

    <style type="text/css">
        html, body {
            width: 100%;
            height: 100%;
            margin: 0;
            overflow:hidden;
        }

        #borderContainer {
            width: 50%;
            height: 50%;
        }

        #bContainer {
            width: 50%;
            height: 50%;
        }
    </style>

    <link rel="stylesheet" href="resources/dijit/themes/claro/claro.css">

    <script>dojoConfig = {parseOnLoad: true}</script>
    <script src='resources/dojo/dojo.js'></script>

    <script>
        require(["dojo/parser"]);
        require(["dijit/layout/BorderContainer"]);
        require(["dijit/layout/ContentPane"]);
        require(["dijit/TitlePane"]);
        require(["dijit/MenuBar"]);
        require(["dijit/PopupMenuBarItem"]);
        require(["dijit/DropDownMenu"]);
        require(["dijit/MenuItem"]);
        require(["dijit/layout/TabContainer"]);
        require(["dijit/form/Form", "dijit/form/Button", "dijit/form/ValidationTextBox", "dijit/form/DateTextBox"]);
    </script>

    <script>
        require([
            "dojo/query",
            "dojo/domReady!"
        ], function(query){
            query("#cp").onclick(
                    function(){
                        alert("cp");
                    }
            )
        });
    </script>

    <script>
        require([
            "dojo/query",
            "dojo/domReady!"
        ], function(query){
            query("#btn").onclick(
                    function(){
                        alert("btn");
                    }
            )
        });
    </script>


</head>
<body class="claro">
<div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'sidebar', gutters:true, liveSplitters:true" id="borderContainer">
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'leading'" style="width: 20%;">
        <div data-dojo-type="dijit/TitlePane" data-dojo-props="title: 'Пусто', open: false">
            <!-- Здесь ничего нет! -->
        </div>
    </div>
    <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region: 'center', style: {height:'100%'}">
        <div id="cp" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'top'">
            <div data-dojo-type="dijit/MenuBar">
                <div data-dojo-type="dijit/PopupMenuBarItem">
                    <span>Меню</span>
                    <div data-dojo-type="dijit/DropDownMenu">
                        <div id="btn" data-dojo-type="dijit/MenuItem">Текст1</div>
                        <div data-dojo-type="dijit/MenuItem">Текст2</div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2016, 16:34
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Надо либо в разные модули это вынести, обьявить через define и подключать как зависимости в одном require на главной странице, либо просто под один require все засунуть. Если первый вариант, то настройка dojoConfig должна быть.
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2016, 18:01
Интересующийся
Отправить личное сообщение для koha345 Посмотреть профиль Найти все сообщения от koha345
 
Регистрация: 16.04.2016
Сообщений: 28

Сообщение от destus Посмотреть сообщение
Надо либо в разные модули это вынести, обьявить через define и подключать как зависимости в одном require на главной странице, либо просто под один require все засунуть. Если первый вариант, то настройка dojoConfig должна быть.
А если я просто повешу в html следующий фрагмент:
Код:
<script type="dojo/on" data-dojo-event="click">
        sayHello("Name");
    </script>
, то можно будет как-то объявить функцию sayHello в dojo, чтобы из разных мест html цеплялось и передавались разные значения?
Меня изначально интересует объявление глобальной функции и её вызов.
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2016, 18:27
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

О какой глобальности идет речь при использовании AMD подхода? Dojo определяет ровно две глобальные переменные: define и require. В вашем случае надо написать модуль, который возвращает вызов функции sayHello и подключать этот модуль в других модулях.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывает событие mouseup в chrome Евгений_Лазаренко Events/DOM/Window 6 28.01.2015 12:06
Вопрос по backbone - не срабатывает событие vuler Общие вопросы Javascript 4 28.12.2014 21:20
Событие на теге input срабатывает несколько раз hrundel Events/DOM/Window 3 15.12.2013 14:49
Не срабатывает событие open для диалогового окна jquery-ui mihail_p AJAX и COMET 4 19.06.2013 22:23
Некорректно срабатывает событие DZHETIGAPA Events/DOM/Window 4 12.05.2011 22:28