【问题标题】:Javascript - change variableJavascript - 更改变量
【发布时间】:2012-07-28 12:43:36
【问题描述】:

我正在尝试构建一个页面,该页面将包含 Twitter 搜索结果的滚动列表(使用 twitter.search for jQuery)。用户应该能够通过单击按钮来更改搜索词(因此,单击“Apple”会将搜索词更改为“Apple”。

我正在使用一个变量来设置搜索词。将该变量设置为文本字符串(即 searchText = "Pineapple";)有效。但是当我尝试使用按钮更改变量时,什么也没有发生。

//edit - 按钮似乎没有改变变量。想法?谢谢。

<script type="text/javascript">
//set default value for searchText
    searchText = "Pineapple";

//this sets up our Twitter stream
    $(document).ready(function() {

        $('#twitter-stream').twitterSearch({ 
        term: searchText, 
        // no fade 
        animOut: { opacity: 1 }, 
        avatar:  false, 
        anchors: false, 
        bird:    false, 
        colorExterior: 'white', 
        colorInterior: 'white', 
        pause:   true, 
        time:    false, 
        timeout: 2000 
        });
    });
</script>

<script type="text/javascript">
    $("#button-container").on("button", "click", function( e ) {
        searchText = $(this).text();
    });
</script>

<div id="twitter-stream" title="Mouse away to un-pause">
</div>

<div id="button-container">
<button class="button"> Apple </button>
</div>

<button onclick="alert(searchText);">Click me!
</button>

【问题讨论】:

  • 不使用变量,为什么不使用隐藏字段并将隐藏字段值设置为您设置的值?

标签: javascript jquery variables button twitter


【解决方案1】:

这段代码效率很低,你可以使用jQuery定义一个函数来处理按钮的所有点击事件,而不是4个几乎相同的函数。

使用 jQuery 的 .on 委派您的事件:

$("#someContainerDiv").on("button", "click", function( e ) {
    searchText = $(this).text();
});

这消除了对值数组的需要,因为您只需获取按钮本身的 innerText。

参考文献

这里是一些关于 jQuery 的 on 的信息,这里是一些关于它所取代的 delegate 函数的信息。

【讨论】:

  • 或者有点不同,像这样: $('.button').click(function(){ searchText = $(this).attr('id'); }); 但归根结底是一样的
  • 这里唯一需要注意的是.click 处理事件绑定的方式与on 不同。如果您使用click 将一个函数绑定到一个元素,删除它,然后重新插入它,该事件将不再被绑定。在这个例子中不太可能出现这种情况,但在大型 Web 应用程序中是一个大问题。只是思考的食物。
  • 绝对正确,好主意。确实,对于 TS 来说可能不是问题,但把这样的事情放在你的脑海里总是好的。
  • 非常感谢你们!不过还是有点麻烦 - 我已经更新了我的问题。
  • 糟糕。稍微调整了一下,现在可以工作了。我的错。再次感谢您。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2011-10-29
  • 2011-09-30
  • 2014-11-29
  • 2018-08-24
相关资源
最近更新 更多