создание селектора, который работает с видимыми элементами, даже если они были изначально загружены как дисплей: нет - PullRequest
0 голосов
/ 06 октября 2010

У меня есть метод, определенный следующим образом:

var product = $('#selProduct:visible');
var note=$('#bbdata');

product.selectProduct({
    target: note,
    url: 'product.php',
    data: { ajax: true }
}).trigger('change');

$.fn.selectProduct= function (options) {

        var defaults = {
        key: "id",
        value: "label"
    };
    var settings = $.extend({}, defaults, options);

    if (!(settings.target instanceof $)) settings.target = $(settings.target);

    return this.each(function () {
        var $$ = $(this);
        $$.bind('change isVisible', function () {
            var data = null;
            if (typeof settings.data == 'string') {
                data = settings.data + '&' + this.name + '=' + $$.val();
            } else if (typeof settings.data == 'object') {
                data = settings.data;
                data[this.name] = $$.val();
            }

            $.ajax({
                url: settings.url,
                data: data,
                type: (settings.type || 'get'),
                dataType: 'html',
                success: function (j) {
                    settings.target.html(j);
                }
            }); // ajax
        }); //change isVisible
    });  // new function
};  // function

function show_product() {
    hide_group2();
    $("#product_zone2").show('fast', function(){
    $("#selProduct").trigger('isVisible');
    });
}

Как видите, селектор имеет фильтр :visible.Этот код работает нормально, когда начальный элемент виден.Но не работает с элементами, которые загружены с display:none.Я сделал div видимым с помощью show (), но события не регистрируются.События определены в методе selectProduct.

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

Ответы [ 2 ]

0 голосов
/ 06 октября 2010

выполняет выбор var product = $('#selProduct:visible'); в событии, которое происходит после загрузки страницы и отображения элементов.

0 голосов
/ 06 октября 2010

Где определяется событие? Если элемент не виден при запуске, вы должны использовать функцию live (), чтобы воздействовать на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...