2014-07-26 2 views
2

Я пытаюсь выбрать ссылку привязки списка, используя jquery. Хотя ссылка «список» не существует на странице, как показано на выходе консоли, кажется, что «щелчок» по-прежнему запускается. Что может вызвать «список» и «добавить» для запуска? У меня есть этот простой код, с помощью JQuery 1.10.2:JQuery ссылка на селектор ссылок

<!-- <a href="#list">List</a> --> 
<a href="#delete">Delete</a> 
<a href="#add">Add</a> 

<script> 
    jQuery(document).ready(function($) { 
     if ($('a[href$="#list"]').length>0){ 
      console.log('list found'); 
     }else{ 
      console.log('list not found'); 
     } 

     function opentab(value){ 
      console.log('opentab: ' + value); 
      //perform task here    
     } 

     $(document).on('click', 'a[href="#list"]', opentab('list')); 
     $(document).on('click', 'a[href="#add"]', opentab('add')); 
    }); 
</script> 

консольный вывод:

list not found 
opentab: list 
opentab: add 

Вот jsfiddle ссылка: http://jsfiddle.net/2FHf6/

ответ

1
$(document).on('click', 'a[href="#list"]', function(e){ 
     opentab('list'); 
}); 
$(document).on('click', 'a[href="#add"]', function(e){ 
     opentab('add'); 
}); 

Демо:

http://jsfiddle.net/XJhN6/

1

Уточнить это обновление fiddle.

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

jQuery(document).ready(function($) { 
    if ($('a[href$="#list"]').length>0){ 
     console.log('list found'); 
    }else{ 
     console.log('list not found'); 
    } 

    function opentab(value){ 
     console.log('opentab: ' + value); 
     //perform task here    
    } 

    $(document).on('click', 'a[href="#list"]', function() { 
     opentab('list'); 
    }); 
    $(document).on('click', 'a[href="#add"]', function() { 
     opentab('add'); 
    }); 
}); 

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

2

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

сделать так:

$(document).on('click', 'a[href="#list"]', function(){ 
      opentab('list') 
     }); 
     $(document).on('click', 'a[href="#add"]', function(){ 
      opentab('add') 
     }); 

UPDATED FIDDLE

Смежные вопросы