Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   сравнение jquery с чистым js (https://javascript.ru/forum/dom-window/41054-sravnenie-jquery-s-chistym-js.html)

JustCrazy 29.08.2013 19:03

сравнение jquery с чистым js
 
вечер добрый, подскажите пожалуйста, почему вот этот код работает как надо:
a = window.document.getElementsByTagName('a');
if (a){	
	for (i = 0; i < a.length; i ++){
		if (/qa\.php\?id=100/i.test(a[i].href)) { a[i].click(); }
	}
}
а вот этот хоть убей не хочет у меня выполняться :(
$(document).find('a').each(function(){
a=$(this).attr('href');
if (/qa\.php\?id=100/i.test(a)) {$(this).click();}
});

может я что-то не так делаю ? вообще проблема в том, что во втором варианте клик не срабатывает, а вешаю другое событие - вроде норм.

danik.js 30.08.2013 05:07

А че не так:
$('a[href*="qa.php?id=100"').click()

mta88 30.08.2013 07:23

а у меня работает, хотя if и регекспы я пропустил
придется вам самому с отладчиком ковыряться

<!doctype html>
<html>
<body>

<a href="http://www.google.com">google.com</a>
<a href="http://habrahabr.ru">habrahabr.ru</a>

<script src="/jquery.min.js"></script>
<script>
$(function() {
  $('a').click(function(e) {
    e.preventDefault();
    console.log('clicked '+this.href);
  });
  
  (function () {
    var a = window.document.getElementsByTagName('a');
    for (i = 0; i < a.length; i ++){
      a[i].click();
    }
  })();
  
  (function() {
    $(document).find('a').each(function() {
      $(this).click();
    });
  })();
});
</script>
</body>
</html>

JustCrazy 30.08.2013 08:54

Цитата:

Сообщение от danik.js (Сообщение 269986)
А че не так:
$('a[href*="qa.php?id=100"').click()

помимо ссылки там еще условия есть, не суть
Цитата:

Сообщение от mta88 (Сообщение 269992)
а у меня работает, хотя if и регекспы я пропустил
придется вам самому с отладчиком ковыряться

ну вот я вместо .click() вешаю .hide() и это событие у меня отлично работает, а клик не хочет :no:
кстати, просмотрел Ваш пример, как таковое событие происходит, согласен, логи идут, но вот действия тоже не происходит

danik.js 30.08.2013 09:40

Цитата:

Сообщение от JustCrazy
вешаю .hide() и это событие...

Это никакое не событие. Это функция. И click() - тоже функция. Но ее вызов за собой влечет генерацию события click. Причем браузер при этом действия не совершит. Нельзя вызвать действие браузера генерируя события средствами JS.
Если нужно перейти по ссылке - пиши location.href = this.href.
И еще вопрос - как ты себе представляешь переход по всем ссылкам сразу?

BETEPAH 30.08.2013 13:44

Цитата:

Сообщение от danik.js (Сообщение 270005)
И еще вопрос - как ты себе представляешь переход по всем ссылкам сразу?

Видимо, имеется в виду target="_blank"

danik.js 30.08.2013 16:18

Цитата:

Сообщение от BETEPAH
Видимо, имеется в виду target="_blank"

Тогда это window.open(this.href), но это сработает только внутри обработчика события, иначе браузер заблокирует новые окна.


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