我要做的是制作"工具提示"以这种方式工作:
当我点击某些"链接"使用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
}
}
});
});
答案 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
}
}
}
}
});
});