Jquery范围问题

时间:2011-02-28 10:11:21

标签: javascript jquery function scope

function drawLabel(labelsIndex) {

    // Check not deleted Label data:(DBID, text, styling, x, y, isDeleted)
    if (!labelData[labelsIndex][5]) {

    // Create
    var newLabel = $('<div id="label' + labelsIndex + '" style="font-size:' + (labelData[labelsIndex][6] * currentScale)  + 'px;z-index:9999;position:absolute;left:' + labelData[labelsIndex][3] + 'px;top:' + labelData[labelsIndex][4] + 'px;' + labelData[labelsIndex][2] + '">' + labelData[labelsIndex][1] + '</div>');
    $('#thePage').append(newLabel);

    // Click edit
    $('#label' + labelsIndex).dblclick(function() {
        if (!isDraggingMedia) {

            var labelText = $('#label' + labelsIndex).html();
            $('#label' + labelsIndex).html('<input type="text" id="labelTxtBox' + labelsIndex + '" value="' + labelText + '" />');

            document.getElementById('#label' + labelsIndex).blur = (function(index) {
                return function() {
                    var labelText = $('#labelTxtBox' + index).val();
                    $('#label' + index).html(labelText);
                };
            })(labelsIndex);

        }
    });   

代码是用文本框替换div的文本,然后当焦点丢失时,文本框消失,divs html成为文本框值。

Uncaught TypeError: Cannot set property 'blur' of null
$.draggable.start.isDraggingMediaresources.js:27
c.event.handlejquery1.4.4.js:63

我认为我对范围感到困惑,如果有人能给我一些观点,我会很感激。如果有人可以告诉我如何在执行后删除模糊功能(解除绑定?)

1 个答案:

答案 0 :(得分:1)

document.getElementById('#label' + labelsIndex).blur是一个javascript函数,而不是jquery :)因此#哈希只是无关紧要。

$('#label'+labelsIndex).bind('blur',function (){
   //labelText value goes here //
});

修改

老实说,你过于复杂化了。)

<div id="txt1">I am div</div>
<textarea id="txt2">I am text</textarea>


$('#edit_button').click(function (){
     var val =  $('#txt1').hide().html();// hide the div,then get value,
     $('#txt2').show().val(val);//show txtarea then put value of div into it
});

$('#save_button');

采取相反的做法