Как получать данные восходит-variableX в функции javascript, чтобы показывать это модальной одной?

У меня есть ссылка, где я храню данные, чтобы посылать их модальной одной используя data-variable, например:

<a href="#" data-toggle="modal" data-target="#modal_noticia_editar" data-id='<%:id%>' data-nombre='<%: nombre %>' class="datos_edit" onclick="enviaDatosEdit();">Editar</a>

И я получаю данные с функцией jQuery через имя класса datos_edit:

$('.datos_edit').click(function (e) {
    e.preventDefault();
    ID = $(this).data('id');
    Nombre = $(this).data('nombre');
});

Мой вопрос: возможно получать данные в функции язык сценариев JavaScript? Как например enviaDatosEdit() не перемещая параметров его:

enviaDatosEdit('<%:id%>', '<%: nombre %>');">

Но, использовать data-id, data-nombre в функции enviaDatosEdit(), в котором, что у меня оставалось что-то как:

function enviaDatosEdit(){
    e.preventDefault();
    ID = $(this).data('id');
    Nombre = $(this).data('nombre');
}
1
задан 17.01.2016, 22:33
3 ответа

Если, ты можешь. Хотя я не нахожу самого элегантного, у тебя есть эти два решения.

Одна:

<a href="#" data-toggle="modal" data-target="#modal_noticia_editar" data-id='<%:id%>' data-nombre='<%: nombre %>' class="datos_edit" onclick="enviaDatosEdit.call(this);">Editar</a>

С этим решением то, что ты делаешь, состоит в том, чтобы менять ему контекст this в enviaDatosEdit, тогда this в enviaDatosEdit когда названный, таким образом, (call) это будет элемент a, если enviaDatosEdit она названа без call, Ваш контекст (this) он будет window.

Следующая была бы:

<a href="#" data-toggle="modal" data-target="#modal_noticia_editar" data-id='<%:id%>' data-nombre='<%: nombre %>' class="datos_edit" onclick="enviaDatosEdit(this);">Editar</a>

function enviaDatosEdit(elem) 
{
    e.preventDefault();
    ID = $(elem).data('id');
    Nombre = $(elem).data('nombre');
}   

Первая, хотя понимают, может приводить в путаницу того, кто видит этот код. Ах, другая вещь, признаки ты должен (data-) доставать их используя attr(по крайней мере в Jquery) и свойства с prop (пойдите, class, disabled, и т.д. 'урожденные '-)

В конце концов я бы это использовал, если ты используешь jquery, я схватил:

<a href="#" data-toggle="modal" data-target="#modal_noticia_editar" data-id='<%:id%>' data-nombre='<%: nombre %>' class="datos_edit">Editar</a>


$('.datos_edit').on('click', enviaDatosEdit);

function enviaDatosEdit(event)
{
    //  this aqui es el contexto que le da jquery al invocar al click, osea this es el elemento 'a'
    var $this=$(this); 
    //  tambien si te complican los contextos,
    //  te serviria  usa var $this=$(event.target); target aqui es el elemnto que 
    //  invoco al evento 
    // introducir el código aquí
    event.preventDefault();
    ID = $this.attr('data-id');
    Nombre = $this.attr('data-nombre');
}

Помни что обыщи всегда твои элементы Jquery и потом ссылается на эту обысканную переменную:

var $elem=$("#tuid");

привет.

4
ответ дан 24.11.2019, 14:59

Я думаю, что, не перемещая параметров, не было бы возможно делать то, что ты хочешь сделать, потому что в этом случае this функции это не будет элемент, который позвонил в функцию но инициализировался бы по умолчанию глобальный объект и был window.

Вещь, которую ты мог бы делать, чтобы создавать характерную функцию, состояла бы в том, чтобы перемещать объект, в котором порождается действие как параметр используя this (в вызове):

<a href="#" data-toggle="modal" data-target="#modal_noticia_editar" data-id='<%:id%>' data-nombre='<%: nombre %>' class="datos_edit" onclick="enviaDatosEdit(this);">Editar</a>

...

function enviaDatosEdit(obj){
    e.preventDefault();
    ID = $(obj).data('id');
    Nombre = $(obj).data('nombre');
}
1
ответ дан 24.11.2019, 14:59

Я не знаю, понял ли я тебя хорошо, так что равный я не отвечаю на то, что ты спрашиваешь...

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

function enviaDatosEdit(e) {
    e.preventDefault();
    ID = $(this).data('id');
    Nombre = $(this).data('nombre');
}

$('.datos_edit').click(enviaDatosEdit);
1
ответ дан 24.11.2019, 14:59