2012-04-19 2 views
0

Мой вопрос такой же, как это oneJQuery вызвать СОБЫТИЕ элемента

Я также столкнулся с той же проблемой, которая href не срабатывает на событие «щелкнул» .Затем я изменил alt и элемент span. Вот мой код

<li><h2><span id='aa' alt="#inbox"><span>Inbox</span></span></h2></li> 

Эта линия мой второй ребенок ul. Я хочу вызвать/щелкнуть эту строку при загрузке страницы.

Но я хочу знать, как вызвать событие шага этого события (#aa). Исправлены коды, которые не были обработаны.
первая попытка:

var href = $('#aa').attr('alt'); 
     window.location.href =href; // this gave me 404 error 

вторая попытка:

$('#aa').trigger("click") // this has no change 

Edit функция будет выполняться, когда упомянутый выше литий> пролет щелкнул. Я хочу, чтобы диапазон li был автоматически добавлен при загрузке страницы. Ответы this question говорят о некоторых проблемах, когда используется <a href>. Поэтому вместо этого я использовал span. Я использую JQuery 1,6

+0

Поместите событие в функцию и назовите это столько времени, сколько вам нужно. Кроме того, я бы сказал, что было плохой практикой включать знак хэша внутри тега alt из-за хэша, определяющего элемент ID элементов в HTML. –

+0

Обратите внимание, что 'alt' является недопустимым атрибутом для элемента SPAN. Вместо этого вы должны использовать якорь (A); у этого есть дополнительное преимущество, которое вы можете предоставить значимой цели для этих пользователей без javascript. –

+0

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

ответ

1

Редактировать: еще одна вещь, которую вы указываете на URL-адрес, который работает для A тега не Span тега, Jquery how to trigger click event on href element это для тэга, который вы упоминаете в своем вопросе.

есть на вопрос, если вы triggring события щелчка, чем вы должны связать событие щелчка с размахом, чем функция использования триггера, чтобы вызвать его

события Написать нажмите

$('#aa').click(function() 
    { 
      alert('span clicked'); 
    }); 

Trigger события, чем

$('#aa').trigger("click"); 
+0

Спасибо, Праная. Я снова редактировал свой вопрос. Также событие click уже написано для каждого тега 'span' ''. $ ('# aa'). click (function() {// здесь что-то делать}, но не работает –

3

Ваша первая попытка дала вам 404, потому что вы пытались изменить URL-адрес только #inbox. Я предполагаю, что вы на самом деле хотел, чтобы добавить хэш к текущему URL, в этом случае вы можете использовать location.hash свойство:

window.location.hash = href; 

Я думаю, вы также можете использовать a элемент вместо span, так как то он будет иметь это поведение по умолчанию, и вам не придется связывать события click для его обработки.

+0

Спасибо за подсказку, не знаю об этом! – Tobias

+0

@James. заменил span тегом, включающим 'href', и попробовал, как вы упомянули' window.location.hash = href; '. Но все же это не сработало. Я обновил свою проблему, чтобы быть более ясным. - –

1

Если я правильно понял, это решит вашу проблему;

Дайте кликнуть простейшую прорезь таким образом.

$('#aa') 
     .bind('click', function() { 
       ..... 
}); 

И называют его, как это в document.ready

$('#Control_2').click(); 
+0

Спасибо Muhammet. но это не сработало для меня. –

1

Я думаю, что самое простое решение, чтобы изменить свои пролеты на якорь тегов обрабатывать любые щелчки после загрузки, если все, что вы хотите сделать, это добавьте хэш-тег к текущему URL-адресу.Тогда вы можете просто немного jquery выбрать ссылку, которую вы хотите на загрузку страницы.

<!doctype html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(function() { 
     window.location.hash = $('#second').attr('href'); 
    }); 
    </script> 
</head> 
<body> 
    <ul> 
     <li><a href="#first">First</a></li> 
     <li><a href="#second" id="second">Second</a></li> 
    </ul> 
</body> 
</html> 

Если это не то, что вы хотите, и вы хотите запустить больше кода на клик, то вы можете выделить ваш клик логики в функцию и вызвать его на странице загрузки, как это:

<!doctype html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(function() { 
     //your function that does stuff on click 
     function doStuff(item) { 
      window.location.hash = $(item).attr('href'); 
      //cancel the click 
      return false; 
     } 

     //call the function on page load 
     doStuff($('#second')); 

     //call the function on click 
     $('#nav a').click(function() { doStuff(this); }); 
    }); 
    </script> 
</head> 
<body> 
    <ul id="nav"> 
     <li><a href="#first">First</a></li> 
     <li><a href="#second" id="second">Second</a></li> 
    </ul> 
</body> 
</html> 
+0

Спасибо bygrace. Я попробовал. Это не сработало для меня. –

+0

Я хотел выполнить функцию, привязанную к тегу '' '' '' '. , эта функция не выполняется всеми способами, указанными во всех ответах на мой вопрос :(Большое спасибо за ваши коды, и ваши первые строки кода также были опробованы, а мой метод назначения не был вызван. –

+0

Похоже, что вы хотите использование - мой второй пример. Если вы хотите, чтобы функция когда ваш якорный тег li будет нажат, вам просто нужно создать селектор, который нацелен на них, а затем привязать к нему событие клика, как я здесь: $ ('# nav a'). click (function() {doStuff (это); }); Я нацелил метки привязки, которые были дочерними элементами элемента с идентификатором «nav». В моем случае UL имеет идентификатор «nav». Код работает. Если вы не можете заставить его работать, вам может быть полезно вставить код, который вы пытаетесь, чтобы мы могли посмотреть на него. – bygrace