Как передать идентификатор элемента в мою функцию jQuery - PullRequest
2 голосов
/ 25 июня 2010

Я использую функцию iFrame Upload Бена Наделя для инструмента редактирования на сайте, над которым я работаю.Я учу JQuery.Функция работает прекрасно.Это часть модального окна многократного использования, и все работает.Но я хочу динамически сообщить функции, откуда поступил вызов, чтобы она загружала правильную форму в модальное окно.Как бы я передать это в функцию.Прямо сейчас трудно получить для #uploadform.По сути, я хочу повторно использовать функцию и добавить переменные, такие как действие, предварительный просмотр, идентификатор формы и т. Д. *

$(function(){
                var jForm = $( "#uploadform" );
                jForm.submit(
                    function( objEvent ){
                    var jThis = $( this );
                    var strName = ("uploader" + (new Date()).getTime());
                    var jFrame = $( "<iframe name=\"" + strName + "\" src=\"about:blank\" />" );
                    jFrame.css( "display", "none" );
                    jFrame.load(
                        function( objEvent ){
                            var objUploadBody = window.frames[ strName ].document.getElementsByTagName( "body" )[ 0 ];
                            var jBody = $( objUploadBody );
                            var objData = eval( "(" + jBody.html() + ")" )
                            var thumb = ('thumbnails/' + eval(jBody.html()));
                            $("#header").css("background", "url(" + thumb + ") no-repeat center");
                            $("#preview").attr("src", thumb);
                    setTimeout(
                        function(){
                            jFrame.remove();
                            },100);
                });
            $( "body:first" ).append( jFrame );
            jThis
                .attr( "action", "upload_act_single.cfm" )
                .attr( "method", "post" )
                .attr( "enctype", "multipart/form-data" )
                .attr( "encoding", "multipart/form-data" )
                .attr( "target", strName );
            });
        });

Ответы [ 3 ]

4 голосов
/ 25 июня 2010

Я собирался предложить нечто подобное, кроме создания отдельной функции для этого случая:

function formSubmit(formId) {
   var jForm = $("#"+formId);
   //remainder of your code
}

Далее, для каждой формы создайте соединение onSubmit либо непосредственно при объявлении html-формы:

<form id="myForm" class="pageForms" onsubmit="function(formSubmit(this.id))> ...

Или программно:

$("#myForm").submit(function() {
   formSubmit("#myForm");
});

[OR]

$(".pageForms").submit(function() { //to apply to all forms within the document
    formSubmit("#"+this.id);         //with that class
});

ИЛИ для всех форм документа (но не уверен, что он будет работать)

$("form").submit(function() { 
   formSubmit("#"+this.id);
});

Не забудьте выполнить вложение в функции onLoad [$ (function () {...})], иначе могут возникнуть ошибки JavaScript: S

0 голосов
/ 25 июня 2010
var myFunction = function(formid) {
  var jForm = $( formid );
  // ....
}

$(function() {
  myFunction("#uploadform");
});
$(function() {
  myFunction("#uploadform2");
});
0 голосов
/ 25 июня 2010

попробуй $(this).attr("id")

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