ACTUALIZACIÓN ** Probablemente sea demasiado código. Pero ... aquí está la situación. Tengo una búsqueda en la parte superior de la página. Utilizo un jQuery elegante, por lo que cuando haces clic en una opción de selección (# categoría), aparece una nueva opción de selección (# tipo) junto a ella.

    $(document).ready(function() {

    $('#category').change(function() {

        var category = $('#category').val();
        //CATEGORIES...

            // any_type / NULL
            var any_category = '<div id="type_holder_line"></div>';
            // Music
            var music = '<div id="type_text">Type</div><img src="app/search/images/arrow.gif" id="arrow" /><select name="music_type" id="type"><option value="any_style" selected="selected">Any Style</option><option value="Jazz">Jazz</option><option value="Rock">Rock</option></select>';

            // Restaurants
            var restaurant = '<div id="type_text">Type</div><img src="app/search/images/arrow.gif" id="arrow" /><select name="restaurant_type" id="type"><option value="Japanese">Japanese</option><option value="Mexican">Mexican</option></select>';

            if($(this).val() == 'Any Category') {
                $('#type_holder').html(any_category);
                }

            if($(this).val() == 'music_page') {
                $('#type_holder').html(music);
                }
            if($(this).val() == 'restaurant_page') {
                $('#type_holder').html(restaurant);
                }
            });

Aquí está el cambio () ;. #type debería instanciar la búsqueda en change (); Pero tampoco lo hace porque está hecho de #categories on change () ;. O, porque estoy usando change (); dos veces.

                // *** START *** keyup / change (for select option)
                $('#loc, #dist, #category, #type, #search_title').bind('keyup change', // HERE, #type is ignored because it's created from #categories on change(); function() {
                    var loc = $('#loc').val();
                    var dist = $('#dist').val();
                    var category = $('#category').val();
                    var type = $('#type').val();
                    var search_title = $('#search_title').val();



                    if(loc == '' && search_title != '') {

                        $.post('http://localhost/app/search/page_type/music_spot/search.name.php', {

                                                                  category:category,
                                                                  type:type,
                                                                  search_title:search_title

                                                                  },
                            function(data) {
                                $('#front_left').html(data);
                                });

                        }



                });
        });
0
Graham 16 nov. 2011 a las 11:11
Actualizado. Es un poco confuso. Sin embargo, es una peculiaridad realmente extraña.
 – 
Graham
16 nov. 2011 a las 11:33

1 respuesta

La mejor respuesta

Creo que deberías probar la función live (). Porque la función en vivo maneja los elementos creados dinámicamente, pero puede leer más en la documentación :)

Entonces puedes probar algo como esto:

$('#loc, #dist, #category, #type, #search_title').live('keyup change', function(){
// code here
});

Por favor lea el manual porque veo ahora que la función .live () está obsoleta para jquery 1.7, y elija la función apropiada para su versión de jquery.

Espero que esto resuelva su problema, y ​​lo siento por mi inglés: ">

1
Briganti 16 nov. 2011 a las 11:54
Si está utilizando jQuery 1.7, .live() está obsoleto en favor de .on().
 – 
jfriend00
16 nov. 2011 a las 11:57