【问题标题】:how to provide a click handler in JQCloud如何在 JQCloud 中提供点击处理程序
【发布时间】:2013-06-11 06:37:38
【问题描述】:

我正在使用 JQCloud 来构建标签云。它既好又简单,符合我用户的视觉标准。我想在用户点击一个单词时调用一个点击处理程序:

var tag_list = new Array();
for ( var i = 0; i < stuff.length; ++i ) {
    var x = stuff[i];
    tag_list.push({
            text: x.NAME,
            weight: x.COUNT,
            //link: this.mkUrl(x),
            click: function() { alert("it worked for " + x.NAME); },
            html: {title: this.mkTooltip(x)}
    });
}
$("#"+containerdivname).append( $("<div></div>", {id:"wordcloud"}));
$("#"+containerdivname).children("#wordcloud").jQCloud( tag_list );

词云渲染良好,有适当的工具提示,但点击时不显示警告框。我在这里做错了什么?

谢谢

【问题讨论】:

  • 点击处理程序的语法看起来不错。你能证明一个关于 jsfiddle 或 jsbin 的工作演示吗?
  • @soderslatt 谢谢,这是一个:jsfiddle.net/Q6348/5 它(抱歉,我以前没有使用过这两种工具。它看起来确实有点难看,但工具提示确实显示正常。)

标签: jquery tag-cloud


【解决方案1】:

JQCloud 中的处理程序应该是这样指定的:

handlers : {click: function() { alert("it worked for" + x.NAME); }}

工作示例,http://jsfiddle.net/Q6348/7/

【讨论】:

  • 更近一步,谢谢。但由于某种原因,它总是说“为 n4 工作”,这是列表中的最后一个词。如何在该特定行中将其归零?
【解决方案2】:

有点不同,也许更容易实现它,像这样构建你的数组:

var stuff = [];
stuff.push({"text":"n1","weight":23,"handlers" : {click: function(res) { alert("it worked for"+res.target.textContent);}}})

这将为您提供您单击的节点的值。

或者如果你想将它传递给一个函数,你可以这样使用它:

stuff.push({"text":"n1","weight":23,"handlers" : {click: function(res) { run(res) }}})

function run(res){
alert("it worked for"+res.target.textContent);
}

希望这个解决方案有所帮助!

【讨论】:

    【解决方案3】:

    您总是可以为您的点击添加一个标准的 jquery 处理程序:

    $(document).on('click', '#container-id .jqcloud-word', function() {
        var word_value = $(this).val();
        console.log(word_value);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2016-04-20
      • 2011-02-24
      相关资源
      最近更新 更多