【问题标题】:Adding a class to a .click function将类添加到 .click 函数
【发布时间】:2012-09-13 22:52:10
【问题描述】:

StackOverflow 的新手,JavaScript/jQuery 的新手。我一直在尝试开发一个包含矢量地图的网站(使用 Raphael 插件),当单击地图的特定区域时,我希望它使用 Colorbox 插件打开一个灯箱。我有 Raphael 和 Colorbox 插件单独工作(我有适用于 Raphael 的悬停功能,并且当点击普通链接时我有 Colorbox 工作)。但是,当它是一个被点击的 Raphael 元素时,我不确定如何让 Colorbox 工作。

这是因为我认为我需要将“内联”类添加到 Raphael 元素,但是我的 .click 函数只能获取 url(我无法添加类)。

抱歉,如果这个问题没有多大意义,我已经转了几个小时了。

当前的 .click 函数。 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 中不存在 Raphael 对象(网址直接取自 JavaScript 文档。

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

【问题讨论】:

  • 该死的,这是一个令人困惑的问题......
  • 也许将它添加到 jsfiddle 中?
  • 什么意思:“将类添加到我的 .click 函数中”
  • @Gung Foo 抱歉,应该说“使用我的 .click 函数添加类”
  • 您在下面的评论中说“链接并不是真正的链接(它不在我的 HTML 文档中的任何地方,它仅存在于 JS 中)”。 JS中不能存在链接-您的意思是链接元素是通过JS添加到页面中的吗?如果是这样,您仍然可以将事件处理程序附加到它或以其他方式从 JS 操作它。

标签: javascript jquery raphael colorbox


【解决方案1】:

不会假装试图完全理解你想要什么,所以我要离开当前的标题。如果是这种情况,并且您想为元素添加一个类以用于某种样式的样式,并且您希望它在单击链接时执行此操作,您可以尝试..

$('.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
  });

由于您在 cmets 中的说法,您的 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
  });

【讨论】:

  • 我认为这不是我要找的:链接并不是真正的链接(它不在我的 HTML 文档中的任何地方,它仅存在于 JS 中)。我不是 100% 确定它是如何工作的,但我认为这个类是一个 JS 类,而不是一个 CSS 类(它不在我的 CSS 文件中,它只在 Colorbox 的 jQuery 文件中)。我很困惑自己;我想我可能只需要找到一种不同的方法来做到这一点。
  • 在您谈论的上下文中,它是css类的等价物,选择器明智,只是因为JS生成链接(我不知道)并不意味着它的JS特定。无论如何,话虽如此,javascript生成的元素在渲染时并不是DOM的一部分,它们是通过javascript添加到其中的。有了这个,你需要使用.live().delegate()之类的东西来循环DOM中的元素,包括JS生成的新元素
  • 在您可以使用时委托它是更好的选择,因为它可以更好地防止偶尔发生的内存泄漏,而没有经过深思熟虑的代码。
  • 谢谢。我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2012-11-17
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多