在我的页面上,我有:
function grabProfiles(searchstring) {
$.post('newsletter.php?mode=grab', { search: searchstring }, function(data) {
$('#newsletter_receivers').html(data);
});
}
$('#newsletter_searchprofiles').bind('keyup', function() {
var searchstring = this.value;
grabProfiles(searchstring);
});
$(document).ready(function() {
grabProfiles('');
});
这将在div元素#newsletter_receivers中输出结果。结果看起来像这样:
<div class="receiver">
Peter
</div>
<div class="receiver">
Maria
</div>
<script>
$(".receiver").click(function () {
$(this).toggleClass("newsletter_receiver_highlight");
});
</script>
因此,当您单击其中一个接收器时,它们将突出显示。这很好。
现在我想将接收者的id属性值(突出显示的id值)放在数组中。然后在单击#newsletters_receivers下存在的提交按钮时提醒此数组值。 (不是在?mode =抓取所有.receiver元素的地方)
我确实喜欢这个:
$('#newsletter_send').click(function(){
alert($('div.newsletter_receiver_highlight').length+' Selected');
var arr = [];
$('div.newsletter_receiver_highlight').each(function(){
arr.push(this.id);
});
alert(arr);
});
这给了我两个警报。一个是对的,它给了我突出显示的数量。应该给我值的第二个警告是空的!
之前我没有发出ajax请求来输出接收器元素。 我认为它是空的,因为第一次页面在#newsletters_receivers中不包含任何内容,直到它发出ajax请求。但那怎么能说出合适的长度呢?
如何为此工作修复/制定解决方案?
//结论问题:
为什么每个()都不活?和这种方法的替代方案?
示例:
$('div.newsletter_receiver_highlight').each(function(){
arr.push(this.id);
});
alert(arr);
这将使用类newsletter_receiver_highlight
存储所有CURRENT元素的值如果我稍后在请求响应中追加带有类newsletter_receiver_highlight的div元素,它将不会存储到数组
答案 0 :(得分:0)
如果某些东西不起作用,请尝试不同的方法。我会使用map
来获取ID数组。
var arr = $('div.newsletter_receiver_highlight').map( function() { return this.id; } ).get();
而不是.each()