Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не срабатывают on и .toArray() (https://javascript.ru/forum/events/50855-ne-srabatyvayut-i-toarray.html)

autumn 14.10.2014 18:30

не срабатывают on и .toArray()
 
Здравствуйте.
Пожалуйста, помогите разобраться со следующими моментами.
На странице имеется элемент
<input type="button" value="send" id="myButton">

Обработчик события нажатия на него:
$(document).ready(function(){
$("#myButton").bind('click', function (e) {
	    var a = $('some_selector').toArray(); 
             ...
	}
}

Проблема 1: Ответ Firefox на запуск скрипта: TypeError: $(...).toArray is not a function (если это имеет значение, то в массив пакуются выбранные пользователем в таблице строки).
Проблема 2: Если вместо bind() стоит on() - не реагирует вообще (с этой проблемой сталкиваюсь не впервой, оставляю bind, знаю, что устарел).

рони 14.10.2014 18:37

autumn,
сделайте тестовый пример в песочнице или тут иначе можно только гадать

autumn 15.10.2014 11:13

Хм, нашла , в чем проблема была. Вот тестовый пример (который не работает)
<script type='text/javascript' src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>   
<script type="text/javascript">
   $(document).ready(function(){
     $("#myButton").bind('click', function (e) {
            var a = $('td input:checked').toArray();
            console.log(a);
        });
    } ); 
</script>

<table>    
        <tr>
            <td>
                <input type='checkbox' name='contacts[]' id='cb1' value='12345'>
                <label for='cb1'></label>
            </td>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>
              <input type='button' value='edit' onclick="Update();">
            </td> 
        </tr>
        <tr>
             <td>
		<input type='checkbox' name='contacts[]' id='cb2' value='12345'>
		<label for='cb2'></label>
            </td>           
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>
              <input type='button' value='edit' onclick="Update();">
            </td> 
        </tr>
        <tr>
             <td>
		<input type='checkbox' name='contacts[]' id='cb3' value='12345'>
		<label for='cb3'></label>
            </td>           
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td>
              <input type='button' value='edit' onclick="Update();">
            </td> 
        </tr>
    </table>
    
    <input type="button" value="send" id="myButton">


Если подключить библиотеку ajax после подключения библиотеки jquery, то не работают ни on, ни toArray() (а, например, val() работает). А если подключить сначала ajax, а потом jquery и собственно исполняющий скрипт - всё в порядке. Хотелось бы знать для общего развития, почему это так. Заранее спасибо.

voral 15.10.2014 12:00

Потому, что вы подключаете два раза одну и ту же библиотеку. Но разных версий.
Там где "jquery" там 1.11
Там где "ajax" там 1.3 (тот же jquery)
Оставьте только 1.11

danik.js 15.10.2014 12:53

code.jquery.com - это не CDN, не стоит подключать оттуда файлы. А в свете последних событий (jquery.com недавно был атакован злоумышленниками) - вообще нельзя. Кроме того, подключать последнюю версию (jquery-latest) - недальновидное решение. При выпуске очередной версии ваш код может просто перестать работать.

ajax.googleapis.com - вот отсюда можно.

http://ajax.googleapis.com/ajax/libs.../jquery.min.js

autumn 17.10.2014 12:51

Убрала jquery.com, остался только ajax.googleapis.com, и теперь ничего не работает, те же проблемы, с которыми я сюда обратилась...

danik.js 17.10.2014 13:42

Ну я ведь написал какой скрипт нужно подключить :cray:


autumn 17.10.2014 15:16

Спасибо, действительно, 1.11.1 работает.


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