Можно ли использовать один сценарий для двух или более нажатий кнопок привязки? - PullRequest
1 голос
/ 03 февраля 2010

На моей странице есть две кнопки привязки 'Conatct Selected', одна сверху имеет идентификатор как "selectAllLink", а другая внизу имеет идентификатор как "selectAllLinkB" страницы. Верхний работает отлично, используя следующий скрипт:

<script type="text/javascript">

$(function() {
    $('#selectAllLink').each(function() {
        var a = [];
        var n = $("td.title_listing input:checked");
        var s = "";

        n.each(function() {
            a.push(this.value);
        });
        s = a.join(',');

        if (a.length > 0)
            this.href = "/D_ContactSeller.aspx?property=" + s;
        else
            this.href = 'javascript:alert("Select at least one property to contact!");';
        return false;
    });
});

Теперь для моей нижней кнопки привязки я попытался указать ее идентификатор как 'selectAllLinkB' и изменил код следующим образом:

    <script type="text/javascript">

    $(function() {
        $('#selectAllLink, selectAllLinkB').each(function() {
            var a = [];
            var n = $("td.title_listing input:checked");
            var s = "";
           .....
           .....
           .....
    });

Есть ли простой метод для вызова сценария для события кнопки привязки? ждем быстрого и хорошего ответа. Заранее спасибо ...

Ответы [ 3 ]

4 голосов
/ 03 февраля 2010

Вы совсем близко. Селектор должен быть '#selectAllLink, #selectAllLinkB'.

Однако вы можете использовать метод click вместо each для регистрации события щелчка вместо установки атрибутов href во время загрузки. Теперь вы получаете флажки, которые отмечаются при загрузке страницы, а не при нажатии на ссылку.

1 голос
/ 03 февраля 2010

Вы столкнулись с проблемой использования ненавязчивого JavaScript для изменения href, и у вас даже есть jQuery. Там действительно нет оснований для использования этого метода

this.href = 'javascript:alert("Select at least one property to contact!");';

Вместо этого вам следует рассмотреть возможность использования более современного метода регистрации событий:

$(function() {
    $('#selectAllLink, #selectAllLinkB').click(function(e) {
        var a = [];
        $("td.title_listing input:checked").each(function() {
            a.push(this.value);
        });

        if ( a.length ) {
            this.href = "/D_ContactSeller.aspx?property=" + a.join(',');
        } else {
            e.preventDefault();
            alert("Select at least one property to contact!");
            return false;
        }
    });
});
0 голосов
/ 03 февраля 2010

Я бы изменил с id на класс и так что-то вроде:

<script type="text/javascript"> 

$(function() { 
    $('.selectAllLink').each(function() { ...
    }
}
...