У меня есть следующий код:

    $(document).ready(function() { 
    $(function detinator() {
                    $("select#arhpcnDetinator").jCombo("services/detinatori.php", { 
                            initial_text: "Detinator",
                            selected_value: $("input#arhpcndetinatorID").val()
                    });
});    
});

И все работает идеально.

Когда я пытаюсь вызвать ту же функцию для другого события, она перестает работать.

  $(document).ready(function() { 
    $(function detinator() {
                    $("select#arhpcnDetinator").jCombo("services/det.php", { 
                            initial_text: "Detinator",
                            selected_value: $("input#arhpcndetinatorID").val()
                    });
    $("#imag").click(detinator);
    });
});

HTML это:

<img src="Sync.png" id="imag" onclick="ziceva">

Пожалуйста помогите! Заранее спасибо.

0
Leonard Lepadatu 12 Янв 2012 в 06:26

4 ответа

Я бы удалил его из двойной оболочки, которая у вас есть, вот так:

$(document).ready(function() { 
    var detinator = function() {
      $("select#arhpcnDetinator").jCombo("services/det.php", { 
        initial_text: "Detinator",
        selected_value: $("input#arhpcndetinatorID").val()
      });
    };

    $("#imag").click(detinator);
});
2
glortho 12 Янв 2012 в 06:30
"Двойная упаковка" была странной. Я бы переместил объявление функции из готовой функции.
 – 
Steve Wellens
12 Янв 2012 в 06:33
Это не эквивалентно его коду, если вы не добавите вызов detinator. Это очень странная конструкция, которая приведет к тому, что эта функция будет вызываться по готовности. Хотя я сомневаюсь, что это сделано намеренно, его способ также добавлял бы дополнительный обработчик click для каждого вызова.
 – 
James Montagne
12 Янв 2012 в 06:34

Не могли бы вы попробовать что-то подобное?

$(document).ready(function() { 

   $("#imag").click(function() {
                $("select#arhpcnDetinator").jCombo("services/det.php", { 
                        initial_text: "Detinator",
                        selected_value: $("input#arhpcndetinatorID").val()
                });

   });


});
0
bretterer 12 Янв 2012 в 06:33
Это не то, что я хочу, потому что, когда загружается DOM, jCombo загружает мое поле выбора. После того, как я добавлю новую запись (в другом окне), я должен обновить/перезагрузить список выбора и вызвать jCombo (jSON).
 – 
Leonard Lepadatu
12 Янв 2012 в 06:41

Попробуйте преобразовать функцию детинатора в javascript.

$(document).ready(function() { 
    function detinator() {
            $("select#arhpcnDetinator").jCombo("services/det.php", { 
                initial_text: "Detinator",
                selected_value: $("input#arhpcndetinatorID").val()
            });
    }
    $("#imag").click(detinator());
});
0
auroranil 12 Янв 2012 в 06:33
Вы не должны звонить detinator. Вы передаете click возвращаемое значение detinator, которое ничего не значит. Кроме того, исходный код выполняет функцию на ready.
 – 
James Montagne
12 Янв 2012 в 06:36
Но я должен вызвать функцию detinator :). Когда DOM загружается, jCombo загружает мой список выбора. После добавления новой записи (в другом окне) я должен обновить/перезагрузить список выбора и вызвать jCombo(jSON), щелкнув #imag.
 – 
Leonard Lepadatu
12 Янв 2012 в 06:43

Я думаю, что проблема заключается в открытой скобке {, которая стоит после $("select#arhpcnDetinator").jCombo("services/det.php",. Удалите его и попробуйте снова..

0
James Montagne 12 Янв 2012 в 06:38
Это не круглая скобка, это фигурная скобка или скобка. И я не вижу в этом проблемы.
 – 
James Montagne
12 Янв 2012 в 06:39