选择div中的所有其他元素,除了单击的元素

时间:2014-09-27 23:44:21

标签: javascript jquery html css ajax

我想首先说这个问题很难回答,很难解释。我有一个div,里面有一个按钮列表。当单击其中一个按钮时,我想确保所有其他按钮都设置为其默认样式,并且按钮的背景单击为#4CC43C。我希望我能正确解释。此外,所有按钮都由ajax请求发送。其他细节已被省略,因为它太难以解释。这是代码:

获取按钮的Php:

   <?php
//code for connecting to database
    include("connect.html");

    $query = "select * from users";
    $result = mysql_query($query, $connect);

    while($row = mysql_fetch_array($result))
    {
        echo'
            <input type="button" class="searchResult" onclick="var oldValue = this.value; this.value=\'(selected) \' + oldValue; this.style.backgroundColor = \'#51CA3E\'; document.getElementById(\'hiddenUserFlag\').value = \''.$row['id'].'\';" value="'.$row['username'].'">
            ';
    }
    ?>

ajax请求代码:

function getUsers()
    {
         $( "#usersToSend" ).load( "php/getPrivateMessagingUsers.php" );
    }

如果您不理解,请告诉我,我会尝试更好地解释它。谢谢。 这是应用程序的屏幕截图,因此您可以看到它正在执行的代码问题是在底部: picture of the application in action LOOK AT THE BOTTOM

目标也是让用户知道他们选择了哪个其他用户。其余的已经完成。

2 个答案:

答案 0 :(得分:1)

如果没有一些用于上下文的HTML以及对可以点击或不能点击的内容的详细解释,问题有点模糊。

在最高级别,您可以使用父<div>上的点击事件,并将类(或内联样式)应用于点击的target

$('div').click(function(evt){
     $(this).find('.clicked').removeClass('clicked');/* reset class from prior events */
     $(evt.target).addClass('clicked'); /* modify the target*/       
});

您可以使用$(evt.target).is('.buttonClass)等方法添加额外的条件过滤器,以帮助确定是否需要在特定目标上更改类或样式

DEMO

答案 1 :(得分:0)

你可能会使用jquery的siblings()遍历函数实现你想要的东西。

$('input.searchResult').click(function() {
  $(this).siblings().each(function() {
    // do your stuff for each of the inputs not clicked.
  });
});

如果您的输入嵌套在某种结构中:

var $inputs = $('div#withThisId input');
$inputs.click(function(e) {
    $inputs.not(this).each(function() {/*do your stuff here*/});
});