Помогите с конвертацией встроенного клика - PullRequest
1 голос
/ 12 августа 2011

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

Вот как они выглядят сейчас:

(HTML)

<ul id="search-navlist">
    <li><a href="#" onclick="searchExhibitorsByAlphabet(this,'A'); return false;">A</a></li>
    <li><a href="#" onclick="searchExhibitorsByAlphabet(this,'B'); return false;">B</a></li>
    <li><a href="#" onclick="searchExhibitorsByAlphabet(this,'C'); return false;">C</a></li>
....
    <li><a href="#" onclick="searchExhibitorsByAlphabet(this,'Z'); return false;">Z</a></li>
</ul>

Вот новый код:

(скрипт)

$(document).ready(function() {
    $('#search-navlist li a').each(function() {
        $(this).attr("onclick", "searchExhibitorsByAlphabet(this,'A'); return false;");
    });
});

(в html)

<ul id="search-navlist">
    <li><a href="#">A</a></li>
    <li><a href="#">B</a></li>
    <li><a href="#">C</a></li>
    ....
    <li><a href="#">Z</a></li>
</ul>

Пока все работает нормально, хотя все ссылки одинаковые. Я бы хотел, чтобы ссылки были связаны с соответствующим письмом.

Я нашел эту функцию:

function iterateAlphabet() {
    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for(var i=0; i<str.length; i++) {
        var nextChar = str.charAt(i);
        alert(nextChar)
    }
}

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

Буду признателен за помощь. Тем временем я продолжу попытки.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Вы можете переписать как:

<ul id="search-navlist">
    <li><a href="#">A</a></li>
    <li><a href="#">B</a></li>
    <li><a href="#">C</a></li>
....
    <li><a href="#">Z</a></li>
</ul>


$(document).ready(function() {
    $('#search-navlist li a').click(function() {
        // alert($(this).text());
        searchExhibitorsByAlphabet(this, $(this).text());
        return false;
    });
});

DEMO

Вы также можете использовать делегат для лучшей производительности:

$(document).ready(function() {
    $('#search-navlist').delegate('li a', 'click', function() {
        // alert($(this).text());
        searchExhibitorsByAlphabet(this, $(this).text());
        return false;
    });
});

Демо

0 голосов
/ 12 августа 2011

Вот что вы можете сделать:

$(document).ready(function() {
    $('#search-navlist').delegate("li", "click", function() {
        searchExhibitorsByAlphabet(this, $(this).text());
        return false;
    });
});

И измените свой HTML-код на:

<ul id="search-navlist">
    <li>A</li>
    <li>B</li>
    <li>C</li>
    ....
    <li>Z</li>
</ul>
...