根据数组ID,工具提示无法正常工作

时间:2014-08-20 04:43:57

标签: javascript jquery arrays tooltip

我要做的是制作"工具提示"以这种方式工作:

当我点击某些"链接"使用X id,它将显示"工具提示"基于"元素"的文本我已经在我的数组中设置了。

现在的问题是,当我创建一个带有第二个或第三个数组的id的新链接时,它仍然显示第一个

我的代码:

var wp_button_pointer_array = new Array();
wp_button_pointer_array[1] = {
    'element' : 'wp-button-pointer',
    'options' : {
        'content': 'The HTML content to show inside the pointer', 
        'position': {'edge': 'top', 'align': 'center'} 
    } 
}; 
wp_button_pointer_array[2] = { 
    'element' : 'some-element-id', 
    'options' : { 
        'content': 'The HTML content to show inside the pointer', 
        'position': {'edge': 'top', 'align': 'center'} 
    }
};


jQuery(document).ready( function($) {

    jQuery('.wp-button-pointer-open-next').click(function(e) {
        e.preventDefault(); 
        if(typeof(jQuery().pointer) != 'undefined') { // make sure the pointer class exists

            if(jQuery('.wp-pointer').is(":visible")) { // if a pointer is already open...
                var openid = jQuery('.wp-pointer:visible').attr("id").replace('wp-pointer-',''); // ... note its id
                jQuery('#' + wp_button_pointer_array[openid].element).pointer('close'); // ... and close it
                var pointerid = parseInt(openid) + 1;
            } else {
                var pointerid = 1; // ... otherwise we want to open the first pointer
            }

        }
    });         
});

1 个答案:

答案 0 :(得分:0)

我认为问题可能就在这一行

var openid = jQuery('.wp-pointer:visible').attr("id").replace('wp-pointer-','');

1)第一个实际上可能没有被隐藏但是被新的覆盖。 attr()函数仅获取第一个匹配元素的属性。要进行问题排查,您可以添加console.log(jQuery('.wp-pointer:visible').length);以查看是否只返回了一个元素。

2)确保在创建新模式时,保持相同的ID模式(“wp-pointer-#”),并且#符号表示的数字正在变化。要进行问题排查,您可以添加console.log(jQuery('.wp-pointer:visible').attr("id"));以查看该ID是否符合您的期望。

<强>更新

如果问题出在var pointerid = 1;并且您需要获取被点击的元素的ID,我认为您可以这样做:

jQuery(document).ready( function($) {
    jQuery('.wp-button-pointer-open-next').click(function(e) {
        e.preventDefault(); 
        if(typeof(jQuery().pointer) != 'undefined') { 
            if(jQuery('.wp-pointer').is(":visible")) { /
                var openid = jQuery('.wp-pointer:visible').attr("id").replace('wp-pointer-',''); 
                jQuery('#' + wp_button_pointer_array[openid].element).pointer('close'); 
                var pointerid = parseInt(openid) + 1;
            } else {
                var pointerid  = 1; //default
                var clickedId = $(e.target).attr("id");

                for (var i in wp_button_pointer_array) {
                    if (wp_button_pointer_array[i].element === clickedId) {
                        pointerid = i;
                        break; //exit the for loop
                    }
                }
            }
        }
    });         
});