2012-09-13 70 views
3

新来的StackOverflow和相对较新的的JavaScript/jQuery的。我一直在尝试开发一个包含矢量地图(使用拉斐尔插件)的网站,当点击地图的特定区域时,我希望它使用Colorbox插件打开灯箱。我有拉斐尔和Colorbox插件单独工作(我有悬停功能为拉斐尔工作,并且当点击正常链接时我有Colorbox工作)。但是,我不确定如何在单击Raphael元素时使Colorbox工作。添加类的。点击功能

这是因为我觉得我需要的“内联”类添加到拉斐尔元素,但是我的。点击功能只能得到一个url(我不能添加一类)。

道歉,如果这个问题没有多大意义,我一直在转圈圈了好几个小时。

电流。点击功能。 locs是单独文档中Raphael对象的数组。 locarr是包含for循环的这些对象的数组。 id和url是Raphael对象的元素。

.click(function(){ 
     location.href = locs[locarr[this.id]].url 
    }) 

Colorbox使用普通链接,如下所示。但我无法想出一种方法将该类添加到我的.click函数中。我尝试过各种版本的.addClass和类似的没有成功。

<a href="#link" class="inline">LINK</a> 

我想我的问题是因为在HTML中不存在拉斐尔对象(网址与JavaScript的文档直取。

再次抱歉,如果这是没有意义的。谢谢。

+0

该死的,这是一个令人困惑的问题... – xandercoded

+1

也许这添加到的jsfiddle? – jtheman

+0

你是什么意思:“类添加到我的。点击功能” –

回答

0

不会假装试着去完全理解你想要的东西,所以我将脱离当前的标题。如果是这种情况,并且你想为某种元素添加一个类来进行某种形式的设计,那么你想要这样做的时候,点击链接就可以试试..

$('.inline').click(function(e) 
{ 
    e.preventDefault();//stops the mouse click from triggering a normal click event 
    $(this).addClass('className');//adds a defined class from your stylesheet 
    //$(this).css({"color":"#FF0"});//changes the style properties without a class 
    }); 

由于在评论中的说法你的JS是生成的链接。您可以尝试..

$('body').delegate('click', '.inline', function(e) 
{ 
    e.preventDefault();//stops the mouse click from triggering a normal click event 
    $(this).addClass('className');//adds a defined class from your stylesheet 
    //$(this).css({"color":"#FF0"});//changes the style properties without a class 
    }); 

,或者你可以尝试

$('.inline').live('click', function(e) 
{ 
    e.preventDefault();//stops the mouse click from triggering a normal click event 
    $(this).addClass('className');//adds a defined class from your stylesheet 
    //$(this).css({"color":"#FF0"});//changes the style properties without a class 
    }); 
+0

我不认为这是我正在寻找的:链接并不是真正的链接(它不在我的HTML文档中,它只存在于JS中)。我不是100%确定它是如何工作的,但我认为该类是一个JS类,而不是CSS类(它不在我的CSS文件中,它只在Colorbox的jQuery文件中)。我迷惑自己;我想我可能只需要找到一个不同的方式来做到这一点。 – CameronD17

+0

在你谈论的上下文中,它是一个css类的等价物,选择者明智,只是导致JS生成链接(我不知道)并不意味着它的JS特定。无论如何,就这么说,由javascript生成的元素在渲染时不是DOM的一部分,它们在通过javascript之后添加在那里。因此,您需要使用'.live()','.delegate()'或其他东西来循环遍历DOM中的元素,包括JS – chris

+0

委托生成的新元素,当您可以使用它时,更好的选择,因为它可以更好地防止可能发生的内存泄漏,而这些内存泄漏可能是由于代码不够精心设计的。 – chris