【问题标题】:Concatenate in jQuery Selector在 jQuery 选择器中连接
【发布时间】:2012-08-26 23:00:19
【问题描述】:

简单的问题。我有一个 js 变量,我也想在 jQuery 选择器中连接。但是它不起作用。也没有弹出错误。怎么了?如何正确地将变量连接到 jQuery 选择器中的某些文本。

<div id="part2"></div>

<script type="text/javascript" >

$('#button').click(function () 
{
var text = $('#text').val();    
var number = 2;
$.post('ajaxskeleton.php', {
red: text       
}, 
    function(){
    $('#part' + number).html(text);
    }); 
});


</script> 

【问题讨论】:

  • 你应该创建一个小提琴:jsfiddle.net.
  • @ason​​328,你知道console.log()。在它的帮助下,通过将其放在有趣的行中,您可以逐步查看代码中发生的事情
  • 不,我不知道。我现在会调查一下。
  • @valentinas jsfiddle 不适合测试 AJAX 代码
  • 你能发布整个代码吗?现在如果没有#text 和#button div,它就无法工作 - 你的 div id 也需要从 part2 开始,而不是 part2

标签: jquery concatenation


【解决方案1】:

语法没有错

$('#part' + number).html(text);

jQuery 接受字符串(通常是 CSS 选择器)或 DOM Node 作为参数来创建 jQuery Object

在您的情况下,您应该将字符串传递给$(),即

$(<a string>)

确保您可以访问变量 numbertext

测试做:

function(){
    alert(number + ":" + text);//or use console.log(number + ":" + text)
    $('#part' + number).html(text);
}); 

如果您发现自己无权访问,请将它们作为参数传递给函数,您必须包含 $.get 的 uual 参数并在它们之后传递自定义参数。

【讨论】:

  • 太棒了。感谢您的明确解释。我的 var 编号被称为未定义,我很快修复了它。
  • Gald 已修复。但是现在我很困惑,你是怎么解决的? :)
  • 新手错误。我在点击事件之外调用了 var 号。
【解决方案2】:

你的连接语法是正确的。

很可能甚至没有调用回调函数。您可以通过在该函数中添加 alert()console.log()debugger 行来测试它。

如果它没有被调用,很可能是 AJAX 错误。查看在$.post() 之后链接.fail() 处理程序以找出错误是什么,例如:

$.post('ajaxskeleton.php', {
    red: text       
}, function(){
    $('#part' + number).html(text);
}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(arguments);
});

【讨论】:

  • $.get 回调的作用域是什么?变量编号和文本可以在那里访问吗?
  • @sabithpocker 如果上面的代码是完整的,那么numbertext 将是可访问的,因为它们是词法范围 的一部分。回调中的“gotcha”变量是this,但您没有使用它。
  • 感谢您为词法作用域提供启示。
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2010-10-16
  • 2012-07-04
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
相关资源
最近更新 更多