jquery назначить onclick для Ли от ссылки

У меня есть список элементов

<ul class="list">
    <li>
        <a href="#Course1" class="launch" onclick="alert('event 1')">event 1</a>
    </li>
    <li class="alt">
        <a href="#Course2" class="launch" onclick="alert('event 2')">event 2</a>
    </li>
    <li>
        <a href="#Course3" class="launch" onclick="alert('event 3')">event 3</a>
    </li>
    <li class="alt">
        <a href="#Course4" class="launch" onclick="alert('event 4')">event 4</a>
    </li>
</ul>

Я хочу, чтобы иметь возможность назначить onclick ссылку на onclick ли aswell

Моя попытка до сих пор один клик позади (как я назначения сценария к onclick, а не выполнение сценария)

$('.list li').click(function() {
    var launch = $('a.launch', this);
    if (launch.size() > 0) { this.onclick = launch.attr('onclick'); }
});

Спасибо заранее Тим

Ответ на: "jquery назначить onclick для Ли от ссылки"

Количество ответов:5

Петля над ли, используя каждый вместо того, чтобы использовать кнопку:

$(document).ready(function(){
    $('.list li').each(function() {
        var launch = $('a.launch', this);
        if (launch.size() > 0) { this.onclick = launch.attr('onclick'); }
    });
});
$('.list li').click(function() {
    var launch = $('a.launch', this);
    if (launch.size() > 0) { eval(launch.attr('onclick')) }
});

Марио решение также будет работать.Шахта будет принимать ребенка onclick событие и выполнить его, на фактический клик.

Марио решение будет связывать 'S onclick событие ли на документ нагрузки. Выберите то, что подходит вам лучше всего.

Лучше всего, вероятно, выбрать один конкретный тип элемента - возможно, тот, с большими размерами - и назначить обработчик кликов только для тех, кто только. Если онклик установлен как на тег A, так и на LI (любыми средствами), вызов может произойти дважды, если только вы специально не предотвратите такие события, кипящие в вашей названной функции.

Есть ли какая-то конкретная причина, по которой вы хотите, чтобы одно и то же действие произошло на обоих типах элементов, а не только на одном? (Если это что-то по линии "просто меры предосторожности", это, вероятно, лучше, чтобы проработать вопросы, а не мощения над ними с более сценариев.)

здание на @Thomas Stock's answer the following code prevents double execution on clicking on link instead of li. (got it from следующий код предотвращает двойное исполнение при нажатии на ссылку вместо ли. (получил его от here jQuery site) j-Квери сайт)

$(document).ready(function() {

    $('ul.list li').click(function(e) {
        var $target = $(e.target);
        if(!$target.is("li")) //magic happens here!!
        {
            return;
        }

        var launch = $('a.launch', this);
        if (launch.size() > 0) 
        { 
          eval(launch[0].onclick());
        }
    });
});

Вы делаете это, чтобы весь блок li является кликабельной ссылкой, а не просто элементом? Если это так, вы можете легко сделать это с CSS вместо.

HTML:

<html>
<head>
    <title>Testing Block Elements</title>
    <link rel="stylesheet" type="text/css" href="styles.css" />
</head>

<body>
    <ul id="menu">
        <li><a href="#">Link 1</a></li>
        <li><a href="#">Link 2</a></li>
        <li><a href="#">Link 3</a></li>
        <li><a href="#">Link 4</a></li>
        <li><a href="#">Link 5</a></li>
    </ul>
</body>
</html>

CSS:

#menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

#menu li {
    /* Added to show the whole li element will be a clickable link. */
    width: 250px;
    border: 1px solid #000000;
}

#menu li a {
    display: block;
}

EDIT:

И, делая это, вам нужно только прикрепить событие клика к тегу, если вам действительно нужно сделать некоторые javascript, когда пользователь нажимает на него.