Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery';getter()只获取最初使用值设置的元素_Jquery - Fatal编程技术网

jQuery';getter()只获取最初使用值设置的元素

jQuery';getter()只获取最初使用值设置的元素,jquery,Jquery,。。。但是,如果该值最初为空(如“”),则不能使用同一个键更改该值 function loadDialog(link, e, ajaxRequest) { e.preventDefault(); var $title = link.innerHTML; var $contenturl = $(link).attr('href'); var $dialog = $('<div id="MyDialog"></div>'); //

。。。但是,如果该值最初为空(如“”),则不能使用同一个键更改该值

function loadDialog(link, e, ajaxRequest) {

    e.preventDefault();
    var $title = link.innerHTML;
    var $contenturl = $(link).attr('href');
    var $dialog = $('<div id="MyDialog"></div>');

    // Read value from hidden input field
    var templateIdValue = $('input[name=TemplateId]').val();     

    // Change the value: This will always and only happen the 2nd time I come here,
    // the first time the templateIdValue will always be empty
    if (templateIdValue != '') {
        templateIdValue = 777;
    }

    $dialog.load($contenturl).data('templateIdKey', templateIdValue).dialog({
        title: $title,
        autoOpen: true,
        modal: true,               
        buttons: {
            "OK": function () {debugger;
                ajaxRequest($(this), $('form', this));
            },
            "Cancel": function () {
                $dialog.dialog("close");
            }
        }
    });
}

即使在更新之后,我也发现您的问题相当混乱,因此我仍然不太明白您想做什么,但您使用
.data()
的方式似乎存在两个大问题

第一个问题是在文档就绪处理程序中检索值:

$(document).ready(function () {
    var templateId = $('#MyDialog').data('templateIdKey');
…但是在响应单击调用
loadDialog()
函数之前,不会存储该值。因此,由于尚未处理任何单击操作,因此,此时自然不会有该键的数据

其次,每次单击多个元素中的任何一个时,您都会调用相同的
loadDialog()
函数,但每次调用
loadDialog()
时,它都会创建一个新的
“MyDialog”
div,然后使用
.data()
将键和值与该新div关联:

var $dialog = $('<div id="MyDialog"></div>');
// other code, then
$dialog.load($contenturl).data('templateIdKey', templateIdValue)
var$dialog=$('');
//那么其他代码
$dialog.load($contenturl.data('templateIdKey',templateIdValue)

同样,您的问题并不清楚,但您似乎在说,您希望这会更新为先前创建的
“MyDialog”
div存储的值,但是
.data()
会将值与单个元素关联。为什么每次都要重新创建对话框div?

“但是如果该值最初为空”-如果该值最初为空
.data()
不会在元素上创建或更新
数据-
属性,如果这是您的意思的话。从何处调用
loadDialog()
?是的,它可能存储在$.cache中。这对我来说也很困惑@nnnnnn将值“templateIdValue”与templateIdKey一起传递给.data(key,value)方法。loadDialog()是一个通用函数,每次单击a标记(链接)时都会调用它。好的,但是从哪里调用
loadDialog()
?它是在尝试使用该值的document.ready处理程序之后调用的吗?@n*6我更新了我的初始帖子!我已经更改了链接/对话框的创建,现在.data()对我来说很好。我现在已经删除了general loadDialog函数,并为每个对话框调用设置了一次对话框,例如openTemplate、createTemplate等的对话框设置。。。啊,我现在才意识到,我每次都重新创造它:P
$(document).ready(function () {
    var templateId = $('#MyDialog').data('templateIdKey');
var $dialog = $('<div id="MyDialog"></div>');
// other code, then
$dialog.load($contenturl).data('templateIdKey', templateIdValue)