Доступ к переменной области на объекте jQuery - PullRequest
2 голосов
/ 03 марта 2012

Я пришел из ExtJS и медленно изучаю jQuery. Я пытаюсь получить доступ к значению параметра / свойства, которое я добавил myVar в диалог из события open диалогового окна.

$("#add-family-dialog").dialog({
    autoOpen: true,
    height: 450,
    width: 600,
    resizable: false,
    modal: true,
    myVar: "hello world!",
    open: function(event, ui) { 
        // TODO: get the myVar value
        // this
        alert($(this).myVar);
        // or this
        alert($(this).attr("myVar"));
        // or this
        alert(this.myVar);
    }
});

Как я могу получить доступ к значению myVar? Это правильный способ сделать это или есть лучший способ хранения переменных на объекте?

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

Вы можете получить к нему доступ с помощью метода 'option':

var myVar = $(this).dialog('option', 'myVar');

Демо: http://jsfiddle.net/ambiguous/ww5Gm/

Я не знаю, указано ли это или случайное поведение, поэтому я бы не зависел от этого. Более естественным подходом (IMO) было бы использование data для прикрепления ваших дополнительных данных:

$('.dialog').data('myVar', 'hello world!').dialog({
    // ...
    open: function(event, ui) {
        var myVar = $(this).data('myVar');
        // ...

Демо: http://jsfiddle.net/ambiguous/R9z8D/

0 голосов
/ 03 марта 2012

Ваша переменная "myVar" не является частью опций диалога плагина (jquery ui), вы не можете добавить дополнительные произвольные переменные в конструктор диалога.

На мой взгляд, лучший подходчтобы ваша переменная находилась вне диалогового окна:

var myVar='hello world';
$( "#add-family-dialog" ).dialog({
    autoOpen: true,
    height: 450,
    width: 600,
    resizable : false,
    modal: true,
    open: function(event, ui) { 
        alert(myVar);
    }
});

... или получить значение скрытого HTML-элемента на вашей странице

<input type="hidden" id="myVar" value="hello world" />

... в javascript

alert($('#myVar').val());

Надеюсь, это поможет.

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