Как отличить onclick fun от нескольких тегов привязки с идентификатором в jQuery

#javascript #jquery #jquery-ui

#javascript #jquery #jquery-пользовательский интерфейс

Вопрос:

Не могли бы вы подсказать мне, как обрабатывать несколько тегов привязки для функциональности click?

Мой код похож :

 <a id="test1" href="#" >test1</a>
<a id="test2" href="#" >test2</a>
  

Моя функциональность jQuery :

 $('a').click(function(event) {
    alert('click');
});
  

Функциональность jQuery click работает для всех тегов привязки, но я хочу дифференцировать функциональность jQuery на основе атрибута id ..

Ответ №1:

Посмотрите на идентификатор этого и сделайте оператор if или переключатель (рекомендуется переключатель):

 $('a').click(function(event) {
    switch(this.id) {
        case 'test1':
            alert('link with an id of test1!');
            event.preventDefault();
            break;
        case 'test2':
            alert('link with an id of test2!');
            event.preventDefault();
            break;
        default:
            //Default behavior
    }
});
  

Ответ №2:

Вы хотите сделать что-то другое в зависимости от идентификатора?

Вы могли бы сделать что-то вроде

 $('a').click(function(e){
    var id = $(this).attr('id');
    // switch depending on id
});
  

или

 $('#test1').click(function(e){ alert("you clicked test1"); });
$('#test2').click(function(e){ alert("you clicked test2"); });
  

Но это было бы не очень хорошо, если бы вы затем собирались добавить несколько, чтобы сделать то же самое.

Ответ №3:

Вы можете получить атрибут id.

 $('a').click(function(event) {
    alert($(this).attr('id') ' clicked!');
});
  

Ответ №4:

вы можете прочитать идентификатор элемента и в зависимости от идентификатора создавать свои функции

 $('a').click(function(event) {
    if ($(this).attr("id") == 'test1')
    {
        alert('Test 1 was clicked');
    }
    else if ($(this).attr("id") == 'test2')
    {
        alert('Test 2 was clicked');
    }
});
  

Ответ №5:

Если вы хотите привязаться к элементу на основе идентификатора:

 $('#test1').click(function(event) {
   alert('test1 clicked');
});
  

Ответ №6:

Это мой подход

 $('a').click(
    function()
    {
        switch($(this).attr('id'))
        {
            case 'test1':
                // Do some work
                break;
            case 'test2':
                // Do some work
                break;
        }
    }
);
  

Ответ №7:

Вы можете посмотреть идентификатор, как предложено в других ответах, но вы также можете прикрепить атрибуты данных к каждому тегу с помощью пользовательского атрибута данных (html5) или использовать href, к которому позже можно получить доступ из события onclick (html5).

пример:

 <a id="test1" data-my-custom-data="Insert" data-row-id="24" href="#" >test1</a>
<a id="test2" href="Insert" >test2</a>

$("a").click(function(event)
{
    alert($(this).attr("data-my-custom-data"));
    alert($(this).attr("data-row-id"));
    alert($(this).attr("href"));

    event.preventDefault(); // To avoid browsing to href...
});