Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запустить скрипт из скрипта (https://javascript.ru/forum/misc/54740-zapustit-skript-iz-skripta.html)

djonA 30.03.2015 13:59

Запустить скрипт из скрипта
 
Подскажите есть скрипт который скрывает div при клике вне его.
И он запускается при клике на ссылку.

Подскажите как его запустить из другого скрипта, без клика по ссылке.


Вот что есть:
<a href="#" id="city">Show message</a>
<div id="message" style="display:none">123</div>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$('#city').click(function(e) {
    var $message = $('#message');
 
    if ($message.css('display') != 'block') {
        $message.show();
 
        var firstClick = true;
        $(document).bind('click.myEvent', function(e) {
            if (!firstClick && $(e.target).closest('#message').length == 0) {
                $message.hide();
                $(document).unbind('click.myEvent');
            }
            firstClick = false;
        });
    }
 
    e.preventDefault();
});
</script>


И есть другой скрипт из которого надо запустить данный скрипт:

<script>
function Load(){
   timer=0;
   o=getObj('info');
  ajaxLoad('info', '/api.php?city_name='+ot, '','','');
   o.style.visibility='visible';
тут мне надо запустить скрипт (назовем его Go();)
}
</script>


Пишу так, но не работает


<script>
function Go(e) {
    var $message = $('#message');
 
    if ($message.css('display') != 'block') {
        $message.show();
 
        var firstClick = true;
        $(document).bind('click.myEvent', function(e) {
            if (!firstClick && $(e.target).closest('#message').length == 0) {
                $message.hide();
                $(document).unbind('click.myEvent');
            }
            firstClick = false;
        });
    }
 
    e.preventDefault();
};
</script>

<script>
function Load(){
   timer=0;
   o=getObj('info');
  ajaxLoad('info', '/api.php?city_name='+ot, '','','');
   o.style.visibility='visible';
Go();
}
</script>

ksa 30.03.2015 14:36

Цитата:

Сообщение от djonA
Подскажите как его запустить из другого скрипта, без клика по ссылке.

Возьми строки с 8 по 15...

djonA 30.03.2015 15:11

Делаю так но не работает:

<a href="#" id="city">Show message</a>
<div id="message">123</div>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function Go(e) {
var $message = $('#message');
    var firstClick = true;
	        $(document).bind('click.myEvent', function(e) {
	            if (!firstClick && $(e.target).closest('#message').length == 0) {
	                $message.hide();
	                $(document).unbind('click.myEvent');
	            }
	            firstClick = false;
	        });
};
</script>

<script>
function Load(){
timer=0;
o=getObj('info');
ajaxLoad('info', '/api.php?city_name='+ot, '','','');
o.style.visibility='visible';
Go();
}
</script>

ksa 30.03.2015 15:15

Цитата:

Сообщение от djonA
Делаю так

А что собственно ты тут делаешь? Ну пообъявлял кучу функций и все...

Чего вообще собрался замастырить?

djonA 30.03.2015 15:23

У меня есть поле input где я ввожу буквы городов, и снизу div куда через ajax выводятся варианты городов.

Все отрабатывает как надо.
Но мне надо что бы когда я жму на любое место кроме этого div (div id="message") то что бы div скрывался.

Вот с эти проблема

ksa 30.03.2015 15:25

Цитата:

Сообщение от djonA
снизу div куда через ajax выводятся варианты городов

Вот при очередном выводе городов проверяй, был ли уже обработчик закрытия того дива... Если не было - навешивай.

djonA 30.03.2015 15:31

так и пытаюсь делать, function Load() - как раз отвечает за вывод городов.

в нее добавляю Go(); - обработчик закрытия div

А дальше пытаюсь запустить Go где как раз будет проверка div, и если он открыт, и я жму не на него, то закрыть его.

Но как это сделать у меня не получается:-(

ksa 30.03.2015 15:45

Цитата:

Сообщение от djonA
function Load() - как раз отвечает за вывод городов.

В твоем "примере" ее никто не вызывает... :no:

djonA 30.03.2015 16:00

А обработчик я правильно навешиваю?

<script>
function Go(e) {
var $message = $('#message');
var firstClick = true;
$(document).bind('click.myEvent', function(e) {
if (!firstClick && $(e.target).closest('#message').length == 0) {
$message.hide();
$(document).unbind('click.myEvent');
}
firstClick = false;
});
};
</script>

tsigel 30.03.2015 16:26

djonA,
лучше использовать on и off


Часовой пояс GMT +3, время: 07:13.